LinkedHashMap
- LinkedHashMap是HashMap的子类(Map接口的子实现)
- LinkedHashMap基本上完全复用了HashMap的底层结构
- (数组+链表+红黑树)
- 基于HashMap只有一个地方做了改变,结点类型(HashMap中存储的是Node结点,包含四个参数,key value hash next)
(LinkedHashMap中存储结点是HashMap结点的子类,在key value hash next基础上增加了两个参数,before,after用来保证添加顺序)
在HashMap基础上维护了一个双向链表 - LinkedHashMap由于维护了一个双向链表,保证了迭代顺序,所以认为LinkedHashMap是有
序的 - get方法可以改变迭代顺序
TreeMap
- TreeMap是Map的一个具体子类实现
- TreeMap数据结构是红黑树,特殊的二叉搜索树
- 底层是链表
- 大小有序
- 不允许重复的key
- 不允许存储null key
- 线程不安全
由于TreeMap底层是一个红黑树,红黑树又是一个特殊的二叉搜索树,那么我们要求存储到TreeMap中的key是可以比较大小的,有两种方式:
1.TreeMap本身提供了比较器
2.存储的Key本事实现了Comparable的compareTo方法
构造方法
TreeMap() 使用键的自然顺序构造一个新的、空的树映射。 |
TreeMap(Comparator<? super K> comparator) 构造一个新的、空的树映射,该映射根据给定比较器进行排序。 |
TreeMap(Map<? extends K,? extends V> m) 构造一个与给定映射具有相同映射关系的新的树映射,该映射根据其键的自然顺序 进行排序。 |
TreeMap(SortedMap<K,? extends V> m) 构造一个与指定有序映射具有相同映射关系和相同排序顺序的新的树映射。 |
待补充》》》
HashTable
有什么用?面试会问
- 是Map接口的子实现
- HashTable是jdk1.0时候产生,Map接口是jdk1.2时候产生
- 底层结构:数组+链表(和jdk1.7之前的HashMap一样)
- 初始容量扩容 默认初始:11,扩容机制:扩为原本二倍加一
- 无序,不允许重复key
- 不允许存储null键和null值
- 线程安全
- HashTable的hash计算方式、下标计算方式也和HashMap不一样
Properties
用于做持久化(把内存写到磁盘文件上)
它是HashTable的一个子类
xml:
json:当下时代主流的文件传输格式
集合类到此结束,每个方法具体的api接下来会把最近这几篇慢慢补充完整。