您的位置:首页 > 其它

Collection集合对象

2016-01-07 15:17 267 查看

关系

Collection

List

LinkedList

ArrayList

Vector

Set

HashSet

LinkedHashSet

TreeSet

Map

HashTable

HashMap

LinkedHashMap

TreeMap

List类族

ArrayList、Vector和LinkedList都继承自AbstractList,AbstractList实现了List接口,并扩展自AbstractCollection.

ArrayList、Vector均采用数组实现,二者区别在于Vector做了线程同步,是线程安全的;

LinkedList使用了循环双向链表结构

列表遍历

for…each、Iterator、for循环

反编译后发现ForEach的实现就是使用的Iterator迭代,但又比Iterator多了一层赋值,所以速度ForEach略多与Iterator

String tmp;
for (String string : list) {
tmp = string;
}
//编译后
ArrayList list = new ArrayList();
for(Iterator iterator = list.iterator(); iterator.hasNext();)
{
String string = (String)iterator.next();
String s = string;
}
//若ForEach循环内直接对循环内容操作,和iterator一样


对数组实现的ArrayList而言,随机访问速度较快,故使用For循环性能就好;

对链表实现的LinkedList来讲,实现随机访问最坏要遍历整个集合,故优先使用前两种。

Map类族

HashTable和HashMap都实现了Map接口,Hashtable子类中海油Properties类的实现。

HashTable对大部分方法做了同步,HashMap没有,因此HashMap是线程不安全的。

HashTable不允许key和value使用null值,HashMap可以。

LinkedHashMap继承自HashMap,在HashMap的基础上增加了一个链表来维护元素的次序表。

TreeSet实现了SortedMap接口,可以对元素进行排序,内部实现是基于红黑树,有着高效的基于key的排序算法。

Set类族

Set元素是不能重复的,Set的实现实际上是对相应的Map实现的封装,HashSet对应HashMap,HashSet内部维护了一个HashMap对象
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  arraylist hashmap