The difference of some collections

The content of this chapter is from Think in Java 3th ,bruce ecekl

ArrayList 
由数组实现的 List。允许对元素进行快速随机访问,但是向 List 中间插入与移除元素的速度很慢。ListIterator 只应该用来由后向前遍历 ArrayList,而不是用来插入和移除元素,因为那比 LinkedList 开销要大很多。
LinkedList
对顺序访问进行了优化,向 List 中间插入与删除的开销并不大。随机访问则相对较慢。(使用 ArrayList 代替。)还具有下列方法:addFirst(),addLast(),getFirst(),getLast(),removeFirst(),和 removeLast(),这些方法(没有在任何接口或基类中定义过)使得 LinkedList 可以当作堆栈、队列和双向队列使用。


Set (interface) 存入 Set 的每个元素都必须是唯一的,因为 Set 不保存重复元素,加入 Set 的元素必须定义 equals()方法以确保对象的唯一性。Set 与 Collection 有完全一样的接口。Set 接口不保证维护元素的次序。   

HashSet*:
   为快速查找设计的 Set,存入 HashSet 的对象必须定义hashCode().
TreeSet:
   保持次序的 Set,底层为树结构。使用它可以从 Set中提取有序的序列。
LinkedHashSet:
   具有 HashSet 的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历 Set时,结果会按元素插入的次序显示。

HashMap*:
         Map 基于散列表的实现。 (取代了 Hashtable)插入和查询“键值对”的开销是固定的。可以通过构造器设置容量

capacity 和负载因子 loadfactor,以调整容器的性能。

LinkedHashMap:
         类似于 HashMap,但是迭代遍历它时,取得“键值对”的顺序是其插入次序,或者是最近最少使用(LRU)的次序。只比

HashMap 慢一点。而在迭代访问时反而更快,因为它使用链表维护内部次序。

TreeMap:
      基于红黑树数据结构的实现。查看“键”或“键值对”时,它们会被排序(次序由 Comparable或 Comparator 决定,稍后会讨论)。TreeMap的特点在于,你得到的结果是经过排序的。TreeMap 是唯一的带有 subMap()方法的 Map,它可以返回一个子树。

WeakHashMap:
            弱键(weak key)Map,Map 中使用的对象也被允许释放;这是为解决特殊问题设计的。如果没有 map 之外的引用指向某个“键”,则此键”可以被垃圾收集器回收。

你可能感兴趣的:(数据结构)