Java集合 - Map, List, Set

集合选择

  1. HashMap:
    HashMap是一个无序的键值对,HashMap使用哈希算法来确定存储元素的位置,所以存储/查找性能较好。存储提供了两个方法,put方法中如果key重复则会更新value,putIfAbsent方法中如果key重复不会更新value。
  2. LinkedHashMap:
    使用双向链表来维护键值对的顺序,该链表负责维护Map的迭代顺序,与键值对的插入顺序一致。
  3. TreeMap:
    TreeMap是一个红黑树,每个键值对即红黑树的一个节点。存储键值对时,需要根据key对节点进行排序。可以保证所有的键值对处于有序状态。有两种排序方式: 自然排序、定制排序
  4. ArrayList:
    基于Object[]实现的List类,是一个动态增长、允许再分配的Object[]。
  5. HashSet:
    简而言之,就是一个只有key没有value的HashMap。
  6. LinkedHashSet:
    根据元素的hashCode值来决定元素的存储位置,用链表维护元素的顺序。
  7. TreeSet:
    保证元素的排序状态。

Set就是一种特殊的Map, 只有key没有value.

  1. Hash***:(HashMap, HashSet)
    以哈希算法分配存储位置。
  2. LinkedHash***:(LinkedHashMap, LinkedHashSet)
    以哈希算法分配存储位置且维护链表结构。
  3. Tree***:(TreeMap, TreeSet)
    排序。

ArrayList和LinkedList
添加/删除ArrayList性能更好,遍历的话列表更占优势。另一个参考维度是集合的数据量,优劣势并非绝对。

你可能感兴趣的:(Java集合 - Map, List, Set)