Conllection
是否有序 | 允许元素重复 |
---|---|
否 | 是 |
List
常用实现类 | 是否有序 | 允许元素重复 |
---|---|---|
ArrayList | 是 | 是 |
LinkedList | 是 | 是 |
List接口是对Conllection的简单扩充。ArrayList是通过数组形式进行存储,适合数据的访问,LinkedList是通过链表方式实现,适合数据的插入和删除。ListIterator提供了对List进行双向遍历的方法。
Set
常用实现类 | 是否有序 | 允许元素重复 |
---|---|---|
AbstractSet | 否 | 否 |
HashSet | 否 | 否 |
TreeSet | 是(用二叉树排序) | 否 |
Set接口也是对Conllection的扩展。HashSet可以快速定位一个元素,数据对象需要实现hashCode()方法。
Map
常用实现类 | 是否有序 | 允许元素重复 |
---|---|---|
AbstractMap | 否 | key值唯一,value可重复 |
HashMap | 否 | key值唯一,value可重复 |
TreeMap | 是(用二叉树排序) | key值唯一,value可重复 |
与Set类似
所有容器的区别与联系
Vector:基于Array,性能受限,线程同步
ArrayList:基于Array,性能受限,线程不同步
LinkedList:Node包含:1.data;2.nextNode。删除和插入是优势
HashSet:在HashMap的基础上实现,存储为HashMap的Key,所以不允许重复
LinkedHashSet:HashSet的一个子类,一个链表
TreeSet:SortedSet的一个子类,是通过SortedMap实现的,所以是有序的
Conllection
— List:
— ArrayList/LinkedList/Vector
— Set:
— HashSet/TreeSet
Map
— HashMap
— HashTable
— TreeMap
Conllections
一个utils类,提供搜索,排序,线程完全化等操作
max(),sort()…
Conllection通过iterstor()遍历元素