Collection接口:该接口是最基本的集合接口。
1. List接口:该接口实现了Collection接口。List是有序、可重复。可以使用索引来访问List中的·元素。有:
- ArrayList:
优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程不安全,效率高 - Vector:
优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程安全,效率低 - LinkedList:
优点: 底层数据结构是链表,查询慢,增删快。
缺点: 线程不安全,效率高
2. Set接口:该接口实现了Collection接口。无序、唯一。SortedSet是按升序排列的Set集合。有:
- HashSet(底层数据结构是哈希表):
- 不能保证元素的顺序;不可重复;不是线程安全的;集合元素可以为 NULL。
- 其底层其实是一个数组,存在的意义是加快查询速度。
- 如果两个对象通过 equals() 方法返回 true,这两个对象的 hashCode 值也应该相同。
- LinkedHashSet(链表和哈希表)
- 不可以重复,有序
- TreeSet(红黑树)
- 有序;不可重复,擅长于范围查询。
以上三个Set接口的实现类比较:
都不是线程安全的类,解决办法:Set set = Collections.synchronizedSet(set 对象)
3. Map接口:包含键值对,Map不能包含重复的键。SortedMap是一个按升序排序的Map集合。有:
- HashMap
- LinkedHashMap
- TreeMap。