Set:

    元素是否可为null 是否线程安全 数据结构
    Collection add(E):boolean remove(Object):boolean contains(Object):boolean
    HashSet add(E):boolean remove(Object):boolean contains(Object):boolean 可以为null 不安全 同HashMap
    TreeSet add(E):boolean remove(Object):boolean
    pollFirst():E
    pollLast():E
    contains(Object):boolean
    first():E
    last():E
    不可以为null 不安全 同TreeMap

    List:

    元素是否可为null 是否线程安全 数据结构
    Collection add(E):boolean remove(Object):boolean contains(Object):boolean
    ArrayList add(E):boolean
    add(int,E):void
    remove(Object):boolean
    remove(int):E
    set(int,E):E contains(Object):boolean
    get(int):E
    可以为null 不安全 Object数组
    LinkedList add(E):boolean
    push(E):void
    remove(Object):boolean
    remove():E
    pop():E
    set(int,E):E contains(Object):boolean
    element():E
    可以为null 不安全 双向链表
    Vector add(E):boolean
    add(int,E):void
    addElement(E):void
    insertElementAt(E,int):void
    remove(Object):boolean
    remove(int):E
    removeElement(Object):boolean
    removeElementAt(int):void
    set(int,E):E
    setElementAt(E,int):void
    contains(Object):boolean
    get(int):E
    elementAt(int):E
    firstElement():E
    lastElement():E
    可以为null 安全 Object数组
    Stack add(E):boolean
    push(E):void
    remove(Object):boolean
    pop():E
    contains(Object):boolean
    peek():E
    可以为null 安全 Object数组

    Queue:

    元素是否可为null 是否线程安全 数据结构
    Collection add(E):boolean remove(Object):boolean contains(Object):boolean
    PriorityQueue add(E):boolean
    offer(E):boolean
    remove(Object):boolean
    poll():E
    contains(Object):boolean
    peek():E
    不可以为null 不安全
    ArrayDeque add(E):boolean
    push(E):void
    remove(Object):boolean
    remove():E
    pop():E
    set(int,E):E contains(Object):boolean
    element():E
    不可以为null 不安全 循环数组

    BlockingQueue:

    元素是否可为null 是否线程安全 数据结构
    Collection add(E):boolean remove(Object):boolean contains(Object):boolean
    ArrayBlockingQueue add(E):boolean
    put(E):void
    take():E contains(Object):boolean
    peek():E
    不可以为null 安全 Object数组
    LinkedBlockingQueue add(E):boolean
    put(E):void
    remove(Object):boolean
    take():E
    contains(Object):boolean
    peek():E
    不可以为null 安全 单链表
    SynchronousQueue add(E):boolean
    put(E):void
    remove(Object):boolean
    take():E
    contains(Object):boolean
    peek():E
    不可以为null 安全

    Map:

    K,V是否可为null 是否线程安全 数据结构
    Map put(K,V):V
    putIfAbsent(K,V):V
    remove(Object):V
    remove(Object,Object):boolean
    replace(K,V):V
    replace(K,V,V):boolean
    containsKey(Object):boolean
    containsValue(Object):boolean
    get(Object):V
    getOrDefault(Object,V):V
    HashMap put(K,V):V
    putIfAbsent(K,V):V
    remove(Object):V
    remove(Object,Object):boolean
    replace(K,V):V
    replace(K,V,V):boolean
    containsKey(Object):boolean
    containsValue(Object):boolean
    get(Object):V
    getOrDefault(Object,V):V
    key可以为null
    value可以为null
    不安全 数组+链表/红黑树
    Hashtable put(K,V):V
    putIfAbsent(K,V):V
    remove(Object):V
    remove(Object,Object):boolean
    replace(K,V):V
    replace(K,V,V):boolean
    containsKey(Object):boolean
    containsValue(Object):boolean
    get(Object):V
    getOrDefault(Object,V):V
    contains(Object):boolean
    key不可以为null
    value不可以为null
    安全 数组+链表
    TreeMap put(K,V):V
    putIfAbsent(K,V):V
    remove(Object):V
    remove(Object,Object):boolean
    replace(K,V):V
    replace(K,V,V):boolean
    containsKey(Object):boolean
    containsValue(Object):boolean
    get(Object):V
    getOrDefault(Object,V):V
    firstKey():K
    lastKey():K
    key不可以为null
    value可以为null
    不安全 红黑树
    WeakHashMap put(K,V):V
    putIfAbsent(K,V):V
    remove(Object):V
    remove(Object,Object):boolean
    replace(K,V):V
    replace(K,V,V):boolean
    containsKey(Object):boolean
    containsValue(Object):boolean
    get(Object):V
    getOrDefault(Object,V):V
    key可以为null
    value可以为null
    不安全 数组+链表
    ConcurrentHashMap put(K,V):V
    putIfAbsent(K,V):V
    remove(Object):V
    remove(Object,Object):boolean
    replace(K,V):V
    replace(K,V,V):boolean
    containsKey(Object):boolean
    containsValue(Object):boolean
    get(Object):V
    getOrDefault(Object,V):V
    contains(Object):boolean
    key不可以为null
    value不可以为null
    安全 数组+链表/红黑树

    一般而言,需要排序的和线程安全的类Key不可以为null
    但是也有特例:ArrayDeque,Vector,Stack
    key和value均不可以为null:Hashtable,ConcurrentHashMap