java集合类

简介:

java常用集合类包括LinkedList、ArrayList、Stack、Queue、HashMap、LinkedHashSet、TreeSet、HashSet、ConcurrentHashMap等。

其中线程安全的容器由Vector、Stack、HashTable、Enumeration(速记法V,SHE),这些是过去遗留下来的类,新程序中不建议使用。

在IDEA(专业版)中可查看集合类的继承关系,找到指定的实现类文件:右键- > diagram->show diagram即可查看。例如ArrayList和LinkedList的继承关系如图1所示,其他继承关系自行查看。

图 1 LinkedList与ArrayList继承关系
  • List
    • LinkedList底层数据结构为链表,插入方便,查找性能差。
    • ArrayList底层是可变数组,插入不方便、查找方便。
  • Queue
    • LinkedList 先进先出。
    • PriorityQueue 底层数据结构是堆,需实现Comparable接口。
  • Stack

    • Stack 底层数据结构基于链表,先进后出。
  • Set

    • HashSet 插入顺序与存储顺序无关,需实现equals和HashCode方法。
    • LinkedHashSet 插入顺序与存储顺序相同,需实现equals和HashCode方法。
    • TreeSet 底层数据结构是树,插入时按照升序排序。需实现equals和Comparable方法。
  • Map
    • HashMap 插入顺序与存储顺序无关,底层数据结构是哈希表。
    • LinkedHashMap 插入顺序与存储顺序相同。底层数据结构是哈希表。
    • TreeMap 底层数据结构是红黑树,顺序有Comparator决定,存储结果是有序的。
    • WeakHashMap 与HashMap相似,不同在于允许垃圾回收器回收键值对(没有被其他地方引用的键)。
    • ConcurrentHashMap 多线程版本的哈希表,支持并发访问。

各容器的常用方法有:

插入 取出 取出并删除
Stack push peek pop
Queue offer peek poll
Map put(K, V) get(K) /