Map
无序,key-value 形式存储对象(key无序不可重复,value无序可重复)
HashTable
实现方式:数组(主体)和链表(解决哈希冲突)<br>
线程安全
查询:不支持随机访问,需要使用key查询
新增和修改:put(K key, V value) <br> K不存在时,新增数据;K存在时,修改对应的value<br> 可以存储 null 值的key和value,但作为key时只能有一个 <br>
删除:支持两种删除方法 remove(Object o) 和 clear()
迭代顺序和插入顺序不一致
HashMap
实现方式:数组和红黑树<br> 当链表长度大于8,且当前数组小于64时扩容数组,否则会转换为红黑树
线程不安全
查询:不支持随机访问,需要使用key查询
新增和修改:put(K key, V value) <br> K不存在时,新增数据;K存在时,修改对应的value<br> 可以存储 null 值的key和value,但作为key时只能有一个 <br>
删除:支持两种删除方法 remove(Object o) 和 clear()
迭代顺序和插入顺序不一致
LinkedHashMap
实现方式:HashMap(存储数据)和双向链表(维持顺序)
线程不安全
查询:不支持随机访问,需要使用key查询
新增和修改:put(K key, V value) <br> K不存在时,新增数据;K存在时,修改对应的value
删除:支持两种删除方法 remove(Object o) 和 clear()
迭代顺序和插入顺序一致
TreeMap<br>
实现方式:红黑树(自平衡的排序二叉树)<br>
线程不安全
查询:不支持随机访问,需要使用key查询
新增和修改:put(K key, V value) <br> K不存在时,新增数据;K存在时,修改对应的value<br> 可以存储 null 值的key和value,但作为key时只能有一个 <br>
删除:支持两种删除方法 remove(Object o) 和 clear()
迭代顺序和插入顺序一致,默认按照 key 升序排列,也可使用 compare() 方法指定顺序<br>