1、Map
也是一种容器的接口,里面存储的是成对的数据,以键(key)值(value)对的形式出现。
Map和Collection是两个没有关系并列的体系
1、HashMap
是Map的实现类,线程不安全,可以使用null作为键值,效率最高
2、Hashtable
是Map的实现类,是通过同步方法保证线程安全的,不可以使用null作为键值,效率最低
①、 Properties
是Hashtable的子类,持久化的属性集,存储的键值对都为String类型,不可以使用null作为键值,线程安全
3、ConcurrentHashMap
是Map继承类的实现类,通过同步代码块的方式保证线程安全,不可以使用null作为键值,效率较高
1、2、3类都是Map接口的实现类,都是通过键值对的形式存储数据,遍历方式也有两种,一种是entryset,一种是keyset。
2、collections工具类
类似于Arrays,这里collections工具类是对集合进行操作,都是静态方法,可以直接调用(类名.方法名)。
常用方法:
1、static <T> boolean
addAll(Collection<? super T> c, T... elements)
将所有指定元素添加到指定 collection 中。
2、static <T> void
fill(List<? super T> list, T obj)
使用指定元素替换指定列表中的所有元素。
3、static <T extends Object & Comparable<? super T>>
T
max(Collection<? extends T> coll)
根据元素的自然顺序,返回给定 collection 的最大元素。
4、static <T extends Object & Comparable<? super T>>
T
min(Collection<? extends T> coll)
根据元素的自然顺序 返回给定 collection 的最小元素。
5、static void reverse(List<?> list)
反转指定列表中元素的顺序。
6、static <T> void
copy(List<? super T> dest, List<? extends T> src)
将所有元素从一个列表复制到另一个列表。
3、泛型
用来约束类型的,只针对引用数据类型,没有约定时,默认为Object
T 类型
K key
V value 值
E 元素
?代表不确定的类型 通常和泛型的上限和下限结合使用
? super 类型:下限 此时?代表的类型为子类或者同种类型 要求最低类型为给出的类型或者为其父类
? extends 类型:上限 此时?代表的类型为父类或者同种类型 要求最高类型为给出的类型或者是其子类