java 集合类结构图
接口 |
实现类 |
保持插入顺序 |
可重复 |
排序 |
使用说明 |
List |
ArrayList |
Y |
Y |
N |
长于随机访问元素;但插入、删除元素较慢(数组特性)。 |
LinkedList |
Y |
Y |
N |
插入、删除元素较快,但随即访问较慢(链表特性)。 |
|
Set |
HashSet |
N |
N |
N |
使用散列,最快的获取元素方法。 |
TreeSet |
N |
N |
Y |
将元素存储在红-黑树数据结构中。默认为升序。 |
|
LinkedHashSet |
Y |
N |
N |
使用散列,同时使用链表来维护元素的插入顺序。 |
|
Map |
HashMap |
N |
N |
N |
使用散列,提供最快的查找技术。 |
TreeMap |
N |
N |
Y |
默认按照比较结果的升序保存键。 |
|
LinkedHashMap |
Y |
N |
N |
按照插入顺序保存键,同时使用散列提高查找速度。 |
List:
有顺序的,元素可以重复;
遍历:for,迭代;
排序:Comparable Comparator Collections.sort()
ArrayList:
底层用数组实现的List;
特点:查询效率高,增删效率低 轻量级 线程不安全;
LinkedList:
底层用双向循环链表实现的List;
特点:查询效率低,增删效率高;
Vector:
底层用数组实现List接口的另一个类;
特点:重量级,占据更多的系统开销,线程安全;
-------------------------------------------------------------------------------------------------
Set:
无顺序的,元素不可重复(值不相同);
遍历:迭代;
排序:SortedSet
HashSet:
采用哈希算法来实现Set接口;
唯一性保证:重复对象equals方法返回为true;
重复对象hashCode方法返回相同的整数,不同对象hashCode尽量保证不同(提高效率);
SortedSet:
对一个Set排序;
TreeSet:
在元素添加的同时,进行排序。也要给出排序规则;
唯一性保证:根据排序规则,compareTo方法返回为0,就可以认定两个对象中有一个是重复对象。
-------------------------------------------------------------------------------------------------
Map:
元素是键值对:key唯一不可重复,value可重复;
遍历:先迭代遍历key的集合,再根据key得到value;
SortedMap:元素自动对key排序
HashMap:
轻量级,线程不安全,允许key或者value是null;
Hashtable:
重量级,线程安全,不允许key或者value是null;
Properties:Hashtable的子类,key和value都是String
TreeMap:
集合是指一个对象可以容纳了多个对象(不是引用),这个集合对象主要用来管理维护一系列相似的对象。