Map集合
- Map集合,用于保存具有映射关系的数据:key-value
- Map中的key和value可以是任何引用类型的数据,会封装到HashMap$Node对象中
- Map中的key 不允许重复;value 可以重复
- Map的 key 和 value 可以为null,但key只能有一个为null
- key 和 value 单向一对一关系
map接口特点
- map存放数据的key-value,一对k-y是放在一个Node中,而Node实现了Entry接口,一对k-y也可看为一个Entry,Entry中k-y指向Hash Map$Node中的k-y。
Map常用接口方法
- put:添加
- remove:根据键删除映射关系
- get: 根据键获取值
- size:获取元素个数
- isEmpty:判断个数是否为0
- clear:清除
- containsKey:查找键是否存在
Map遍历
- containsKey:查找键是否存在
- keySet:获取所有的键
- entrySet:获取所有关系k-v
- values:获取所有的值
Map常用实现类·
- HashMap
- (k,v) 是一个Node 实现了Map.Entry<K,V>
查看 HashMap 的源码可以看到
jdk7.0的hashmap 底层实现[数组+链表],jdk8.0 底层[数组+ 链表+红黑树]
-
HashTable
1)存放的元素是键值对: 即 K-V
2)hashtable的键和值都不能为null
3)hashTable 使用方法基本上和HashMap一样
4)hashTable 是线程安全的,hashMap 是线程不安全的 -
Properties
1)Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存数据;
2)他的使用特点和Hashtable类似,键和值都不能为null;
Properties 还可以用于 从 xxx.properties 文件中,加载数据Properties类对象并进行读取和修改;
3)工作后 xxx.properties 文件通常作为配置文件。
TreeMap、TreeSet
- TreeSet的底层还是TreeMap
- TreeSet元素不能重复;TreeMap中key不能重复且不能为null
- TreeSet和TreeMap可以使用有参构造器自定义(comparator)排序
Collections工具类
- reverse(List): 反转 List 中元素的顺序
- shuffle(List): 对 List 集合元素进行随机排序
- sort(List): 根据元素的自然顺序对指定 List 集合元素按升序排序
- sort(List,Comparator): 根据指定的 Comparator 产生的顺序对 List 集合元素进行排序
- swap(List,int,int): 将指定 list 集合中的i 处元素和i处元素进行交换
- Object max(Collection): 根据元素的自然顺序,返回给定集合中的最大元素
- Object max(Collection,Comparator): 根据 Comparator 指定的顺序返回给定集合中的最大元素
- Object min(Collection)
- Object min(Collection, Comparator)
- int frequency(Collection,Object): 返回指定集合中指定元素的出现次数
- void copy(List dest,List src): 将src中的内容复制到dest中
- boolean replaceAll(List list,Object oldVal, Object newVal): 使用新值替换 List 对象的所有旧值