java学习中对泛型、Map、Collectiongs的一些理解

    xiaoxiao2025-05-16  11

    泛型:

    1、泛型定义,一种安全机制。表明参数或者接口或者类的数据类型, 般是 < > 表示 泛型,是在1.5之后才产生的, 一般JDK“进化” 会更安全,更高效,更完整。 在1.5之前,没有泛型都是用利用多态的思想 强制转化成某个类型再得到想要的值, 使用泛型过后, 可以在编译的环节直接知道数据的问题所在: ArrayList<Person> list = new ArrayList<Person>(); 泛型在什么时候使用? 当不确定某个参数的类型的时候可用泛型。 2、泛型的类 泛型类在多个方法前面间实施类型约束。 泛型一旦作用于类,那么该类的所有函数都可以使用该泛型类 实例化该类的时候需要加入泛型确保安全。 3、泛型的函数 1、通常情况下参数内部不知道类型的时候使用泛型。 public <QQ> void run(QQ q) 4、 静态泛型函数: 1、静态函数不可以访问类上定义的泛型。 2、如果静态方法操作的应用数据类型不确定, 那么在函数上确定好泛型 5、 泛型接口: * interface Run<TT>{ public void run(TT a); public void runrun(TT b); } 需要注意的是:一旦使用名字,那么在实现的时候 需要确定是何种类型。 来自官方普通的四种泛型 <K> 键 <V> 值 <E> 异常类 <T> 普通泛型 特殊情况: 1、泛型的参数如果不考虑继承的话, 会报错的,除非用? 泛型通配符有三种: 1、无限定通配符 , <?> 2、上边界限定通配符 ,<? extends Number> ArrayList<? extends 类型1> x = new ArrayList<类型2>(); 类型1指定了一个数据类型, 那么类型2只能是类型1或者类型1的子类 3、下边界限定通配符 ,<? super Number> ArrayList<? super 类型1> x = new ArrayList<类型2>(); 类型1指定了一个数据类型, 那么类型2就只能是类型1或者类型1的父类 限定通配符总是包括自己!

    Map

    Map 集合:<键值对> 就像是一本书的目录和内容,通常是通过目录去找内容。 Map 无序的: 1、增 put(key, value) putAll(Map<? extends K,? extends V> m) 2、删 clear remove(Object key) 3、改 put(K key, V value) 4、查 keySet entrySet get size HashMap与TreeMap 1、HashTable 同步的,Hash表的数据结构形式,速度慢 2、HashMap 不同步的,Hash表的数据结构形式,速度快 3、TreeMap 不同步的,Tree的数据结构形式,速度慢 获取键的形式,遍历: 1、keySet 2、entrySet HashMAP 和 HashSet 区分与联系: 1、都是通过哈希表做为数据结构存储数据。 2、集合内部的数据都不重复。 3、HashSet 其实就是一种HashMap,只不过不存在相关的key,也就是取值的时候只能用迭代。 4、HashMap 没有迭代。需要转换成Set类型。

    Collections

    包装器与众多集合类一样实现了Collection接口。 包装器里的方法都是由静态方法组成,可以直接通过类调用 包装器里的方法: fill、reverse、max、min、replaceAll、shuffle、sort\ fill: 使用指定元素替换指定列表中的所有元素。 reverse: 反转指定列表中元素的顺序。 max: 取列表中最大的元素,按自然排序。 min:取集合中最小的元素,按自然排序。 replaceAll: 使用另一个值替换列表中出现的所有某一指定值。 shuffle:打乱列表 sort: 自然排序,可重写比较器 高级for循环:在1.5之后有foreach for( xx : yy ) 高级for局限性:必须要有遍历的目标 可变参数 JDK 1.5 特性 其实一种数组参数的简写方式, 代替实例化的过程, 也称之为隐私封装数组.。 可变参数原则:   1、如果需要多个参数传入,请把其他的参数放在可变参数之前。 2、可变参数只有... ,比如 int... 表示传入的int的数组。 3、一个函数只能拥有一个可变参数。
    转载请注明原文地址: https://ju.6miu.com/read-1298945.html
    最新回复(0)