- HashMap:
HashMap是一个无序的键值对,HashMap使用哈希算法来确定存储元素的位置,所以存储/查找性能较好。存储提供了两个方法,put方法中如果key重复则会更新value,putIfAbsent方法中如果key重复不会更新value。 - LinkedHashMap:
使用双向链表来维护键值对的顺序,该链表负责维护Map的迭代顺序,与键值对的插入顺序一致。 - TreeMap:
TreeMap是一个红黑树,每个键值对即红黑树的一个节点。存储键值对时,需要根据key对节点进行排序。可以保证所有的键值对处于有序状态。有两种排序方式: 自然排序、定制排序 - ArrayList:
基于Object[]实现的List类,是一个动态增长、允许再分配的Object[]。 - HashSet:
简而言之,就是一个只有key没有value的HashMap。 - LinkedHashSet:
根据元素的hashCode值来决定元素的存储位置,用链表维护元素的顺序。 - TreeSet:
保证元素的排序状态。
Set就是一种特殊的Map, 只有key没有value.
- Hash***:(HashMap, HashSet)
以哈希算法分配存储位置。 - LinkedHash***:(LinkedHashMap, LinkedHashSet)
以哈希算法分配存储位置且维护链表结构。 - Tree***:(TreeMap, TreeSet)
排序。
ArrayList和LinkedList
添加/删除ArrayList性能更好,遍历的话列表更占优势。另一个参考维度是集合的数据量,优劣势并非绝对。
网友评论