Collection集合对象
2016-01-07 15:17
267 查看
关系
CollectionList
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对象相关文章推荐
- c语言实现hashmap(转载)
- C#.Net ArrayList的使用方法
- VBS ArrayList Class vbs中的数组类
- C#中Arraylist的sort函数用法实例分析
- C#中ArrayList的使用方法
- C#中Array与ArrayList用法及转换的方法
- 解析WeakHashMap与HashMap的区别详解
- C#生成随机ArrayList的方法
- c# ArrayList的使用方法小总结
- PHP实现C#山寨ArrayList的方法
- 基于Java HashMap的死循环的启示详解
- Java中HashMap和Hashtable的区别浅析
- PowerShell中使用ArrayList实现数组插入、删除、添加例子
- 重载toString实现JS HashMap分析
- 在JavaScript中构建ArrayList示例代码
- Android中实现HashMap排序的方法
- js实现ArrayList功能附实例代码
- 举例详解Java编程中HashMap的初始化以及遍历的方法
- 深入理解Java中的HashMap的实现机制
- 2种Java删除ArrayList中的重复元素的方法