Collect 无序,可重复,可以有多个null
List接口 有序(添加顺序),可重复,可以有多个null
ArrayList类 有序(),可重复,可以有多个null。底层使用的数据结构是数组
LinkedList类 有序(),可重复,可以有多个null。底层使用的数据结构是双向链表
Set接口 无序,不可重复,可以有一个null
HashSet类 元素无序,不可重复,可以有一个null。底层使用哈希表实现。(即:数组+n个链表)
LinkedHashSet 元素有序(添加和遍历的顺序一致),不可重复,可以有一个null
TreeSet类 元素有序(升序java.lang.Comparable,java.util.Comparator),不可重复,可以有一个null
Map
HashMap类 底层使用哈希表数据结构。元素是Node or Entry,一个元素包含了final int hash,final K key, V value,Node<K,V>next;被封装成一个Node。将Node放到哈希表中。根据Node中的key的哈希值hashCode()来决定存放位置。Key应该的类型需要重写hashCode()方法。还要重写equals方法。
要找Node中的value,要先获得key,通过key获得哈希码,通过哈希码就可以获得整个Node在整个表中的位置(如果位置没有元素,那么就返回null),然后根据equals比较和该链中的那个key值相等,找到相等的就找到了Node。Value就在Node中。
TreeMap
底层使用红黑树-平衡二叉树。