目录 start

  1. JDK中的集合
    1. 集合继承和实现关系
    2. Iterator
    3. Map
      1. HashMap
      2. ConcurrentHashMap
      3. TreeMap
    4. List
    5. Set
  2. 第三方开源集合框架
    1. fastutil
    2. Koloboke
    3. Trove

目录 end|2019-10-19 17:04|


JDK中的集合

集合继承和实现关系

  • Collection 接口

    • List 接口
      • ArrayList
      • LinkedList 也实现了Queue接口 双向链表实现
      • Vector
    • Set 接口 内容不允许重复
      • SortedSet 接口 单值排序接口
        • TreeSet
    • Queue 接口 队列接口
      • PiorityQueue
  • Map接口

    • HashMap 无序, key不重复
    • HashTable 无序, key不重复
    • TreeMap 按key排序, key不重复
    • IdentityMap key可重复
    • WeakHashMap 弱引用Map集合

Iterator

迭代器


Map

HashMap 键能为null, HashTable则不可以, 而且HashTable是线程安全的(依靠 synchronized 关键字实现)

参考博客: Java Map 集合类简介

HashMap

ConcurrentHashMap

避免 ConcurrentModificationException

TreeMap

参考博客: TreeMap 红黑树算法实现


List

interface

包括的方法有:

List method
List method

List接口有众多实现, 最常用的 ArrayList LinkedList


stackoverflow: list add then unsupportedoperationexception

有时候会使用 Arrays.asList() 或者 Collections.singletonList() 来快速生成 List
但是 这两个生成的实例都是返回 AbstractList 的实现类, 其 add remove 方法是没有实现的, 如果调用了就会抛出异常

1
2
3
public void add(int index, E element) {
throw new UnsupportedOperationException();
}

这是因为, 这个类设计就是采用的定长数组来实现List, 所以不能对其中元素进行更改 类似的还有 Collections.emptyXxx()


Set

  • Set是无序的,但是StringRedisTemplate的对象操作返回的set竟然是有序的
    • 因为有一个类是SortSet,顾名思义,所以是有序的,要继续多学习和使用Java原生的集合对象了

3分钟搞掂Set集合


第三方开源集合框架

fastutil

Github

Koloboke

Github

Trove

BitBucket