所有集合均可使用迭代器进行遍历
collocation接口:
collocation接口下有list接口与set接口
list接口:
特点:有序,可重复
ArrayList:
特点:底层数组结构,可以自动扩容,增删慢,查找快。运行效率高,线程不安全。初始容量为0,添加第一个元素时容量为10,1.5倍扩容。
LinkedList:
特点:底层链表结构,增删快,查找慢。运行效率高,线程不安全。(链表结构没有固定容量)
Vector:
特点: 底层数组结构,可以自动扩容,增删慢,查找快。运行效率低,线程安全。初始容量为10,2倍扩容,负载因子默认为1,可指定
Stack:
特点: 底层数组结构,继承自Vector,运行效率低,线程安全。
set接口:
特点:无序,不可重复。可以使用比较器排序,比较器可以是实现Comparator接口,重写compare方法,也可继承Comparable类,重写ComparaTo方法,实现该接口为自然排序。
HashSet:
特点: 底层为数组加链表(哈希表),根据HashCode方法与equals方法判断元素是否重复,线程不安全
TreeSet:
特点: 底层为红黑树结构,TreeSet可以根据比较器或者根据元素来进行自然排序,不具备排序条件的元素放入TreeSet中会出现异常,不允许添加null元素,线程不安全
LinkedHashSet:
特点: LinkedHashSet是HashSet的子类,是set集合中唯一一个可以保证怎么存就怎么取的集合,LinkedHashSet,不允许元素重复,判断集合的方式与HashSet一致
Map接口:
HashMap:
特点: 双例集合,元素以键值对形式存储,允许null键与null值,无序,键不可重复。JDK1.8之前为数组+链表,链表采用头插法,JDK1.8开始为数组+链表,数组+红黑树,链表采用尾插法,当数组长度大于等于8时自动转换为数组+红黑树,小于等于6时自动转回数组+链表,默认长度为16,扩容因子为0.75,两倍扩容,容量为2的幂
ConcurrentHashMap:
特点: 双例集合,线程安全,底层引入分段锁的概念,将数据分成几段存储,根据value的HashCOde判断存储在哪个segment中,JDK1.7以及之前底层为数组加链表,与HashMap的区别是,核心变量使用volatile修饰,JDK1.8时底层为数组+红黑树,方法中的部分代码使用synchroized代码块
初学者,难免会写错,欢迎指正