Java的集合框架学习笔记
2013-06-15 23:52
274 查看
出自:http://www.blogjava.net/xmatthew/archive/2008/10/25/236581.html
集合类
Set
HashSet
优点:
后台实现一个hash table 加速get和contains方法。后台使用数组保存
缺点:
默认大小为16, 如果超过则需要重新申请内存空间,大小为原来的两倍,并把原来的数据内容复制到
新的内存空间中。
线程不安全(需通过Collections.synchronizedList方法设置)
加入的元素顺序会因其内部的hash排序而改变
注:通常缺省的load factor 0.75较好地实现了时间和空间的均衡。增大load factor可以节省空间但相应的查找时间将增大,这会影响像get和put这样的操作。
LinkedHashSet
优点:
后台实现一个hash table 加速get和contains方法。后台使用链表保存
缺点:
默认大小为16, 如果超过则需要重新申请内存空间,大小为原来的两倍,并把原来的数据内容复制到
新的内存空间中。
线程不安全(需通过Collections.synchronizedList方法设置)
加入的元素顺序会因其内部的hash排序而改变
注:通常缺省的load factor 0.75较好地实现了时间和空间的均衡。增大load factor可以节省空间但相应的查找时间将增大,这会影响像get和put这样的操作。
TreeSet
优点:
通过一个HashMap来实现数据的保存,内部实现红黑树数据结构,使所有元素按升序保存。
提供高效的get和contains方法,保存操作的效率为log(n)
缺点:
默认大小为16, 如果超过则需要重新申请内存空间,大小为原来的两倍,并把原来的数据内容复制到
新的内存空间中(来自HashMap)。
线程不安全(需通过Collections.synchronizedList方法设置)
加入的元素升级排序而改变
注:treeset对元素有要求,必须实现Comparable接口或是Comparator 接口)
注:通常缺省的load factor 0.75较好地实现了时间和空间的均衡。增大load factor可以节省空间但相应的查找时间将增大,这会影响像get和put这样的操作。
CopyOnWriteArraySet
优点:
针对于对Set操作的情况有很多变化时使用,优其是在高并发的情况不想使用同步控制锁时
缺点:
消耗比较大的资料,每次作更新操作时,都会重新Copy一块内存后,再做合并操作。
List
ArrayList
优点:
使用数组,提供快速的get,add和iterate方法,占用比较小的内存空间
缺点:
线程不安全(需通过Collections.synchronizedList方法设置)
insert和remove操作,非常慢(需要移动数组元素来实现)
当size超过时,需要新建一个较大的数据(默认大小是10,增量是 (size * 3)/2 + 1,
且把原来的数据都复制到新的上面)
LinkedList
优点:
使用链表结构,提供快速的add, insert, remove方法,占用比较小的内存空间
缺点:
线程不安全(需通过Collections.synchronizedList方法设置)
get操作,非常慢(需要从head一级级遍历查找)
Vector
优点:
线程安全。
缺点:
相对于ArrayList效率要低。拥有ArrayList的缺点。
CopyOnWriteArrayList
优点:
针对于对List操作的情况有很多变化时使用,优其是在高并发的情况不想使用同步控制锁时
缺点:
消耗比较大的资料,每次作更新操作时,都会重新Copy一块内存后,再做合并操作。
TreeList(apache commons-collections)提供
优点:
基于二叉数 提供比较快速的get, add,insert,iterate,remove方法。其中get,add和iterate方法比ArrayList稍慢一点。
缺点:
相对于ArrayList和LinkedList占比较多的内存空间
线程不安全(需通过Collections.synchronizedList方法设置)
Map
ConcurrentHashMap
优点:
基于二叉数 提供比较快速的get, add,iterate方法。默认大小的16.
它是线程安全
缺点:
如果大小超过设定的大小时,效率会非常低。它会重新申请内存空间(原来空间的两倍),同时把原来的值复制到新内存空间上。
集合类
Set
HashSet
优点:
后台实现一个hash table 加速get和contains方法。后台使用数组保存
缺点:
默认大小为16, 如果超过则需要重新申请内存空间,大小为原来的两倍,并把原来的数据内容复制到
新的内存空间中。
线程不安全(需通过Collections.synchronizedList方法设置)
加入的元素顺序会因其内部的hash排序而改变
注:通常缺省的load factor 0.75较好地实现了时间和空间的均衡。增大load factor可以节省空间但相应的查找时间将增大,这会影响像get和put这样的操作。
LinkedHashSet
优点:
后台实现一个hash table 加速get和contains方法。后台使用链表保存
缺点:
默认大小为16, 如果超过则需要重新申请内存空间,大小为原来的两倍,并把原来的数据内容复制到
新的内存空间中。
线程不安全(需通过Collections.synchronizedList方法设置)
加入的元素顺序会因其内部的hash排序而改变
注:通常缺省的load factor 0.75较好地实现了时间和空间的均衡。增大load factor可以节省空间但相应的查找时间将增大,这会影响像get和put这样的操作。
TreeSet
优点:
通过一个HashMap来实现数据的保存,内部实现红黑树数据结构,使所有元素按升序保存。
提供高效的get和contains方法,保存操作的效率为log(n)
缺点:
默认大小为16, 如果超过则需要重新申请内存空间,大小为原来的两倍,并把原来的数据内容复制到
新的内存空间中(来自HashMap)。
线程不安全(需通过Collections.synchronizedList方法设置)
加入的元素升级排序而改变
注:treeset对元素有要求,必须实现Comparable接口或是Comparator 接口)
注:通常缺省的load factor 0.75较好地实现了时间和空间的均衡。增大load factor可以节省空间但相应的查找时间将增大,这会影响像get和put这样的操作。
CopyOnWriteArraySet
优点:
针对于对Set操作的情况有很多变化时使用,优其是在高并发的情况不想使用同步控制锁时
缺点:
消耗比较大的资料,每次作更新操作时,都会重新Copy一块内存后,再做合并操作。
List
ArrayList
优点:
使用数组,提供快速的get,add和iterate方法,占用比较小的内存空间
缺点:
线程不安全(需通过Collections.synchronizedList方法设置)
insert和remove操作,非常慢(需要移动数组元素来实现)
当size超过时,需要新建一个较大的数据(默认大小是10,增量是 (size * 3)/2 + 1,
且把原来的数据都复制到新的上面)
LinkedList
优点:
使用链表结构,提供快速的add, insert, remove方法,占用比较小的内存空间
缺点:
线程不安全(需通过Collections.synchronizedList方法设置)
get操作,非常慢(需要从head一级级遍历查找)
Vector
优点:
线程安全。
缺点:
相对于ArrayList效率要低。拥有ArrayList的缺点。
CopyOnWriteArrayList
优点:
针对于对List操作的情况有很多变化时使用,优其是在高并发的情况不想使用同步控制锁时
缺点:
消耗比较大的资料,每次作更新操作时,都会重新Copy一块内存后,再做合并操作。
TreeList(apache commons-collections)提供
优点:
基于二叉数 提供比较快速的get, add,insert,iterate,remove方法。其中get,add和iterate方法比ArrayList稍慢一点。
缺点:
相对于ArrayList和LinkedList占比较多的内存空间
线程不安全(需通过Collections.synchronizedList方法设置)
Map
ConcurrentHashMap
优点:
基于二叉数 提供比较快速的get, add,iterate方法。默认大小的16.
它是线程安全
缺点:
如果大小超过设定的大小时,效率会非常低。它会重新申请内存空间(原来空间的两倍),同时把原来的值复制到新内存空间上。
相关文章推荐
- Java学习笔记之集合框架3
- 集合框架ArrayList、List、Vector+JAVA学习笔记-DAY15
- JAVA 集合框架学习笔记
- Java基础学习笔记十六 集合框架(二)
- java学习笔记:集合框架之TreeSet
- Java学习笔记28(集合框架二:Iterator迭代器)
- Java基础学习笔记十七 集合框架(三)之Map
- java学习笔记:集合框架之TreeSet
- 【转】Java集合框架学习笔记
- (33)Java学习笔记——集合框架 / List集合&子类 / 常见数据结构
- JAVA学习笔记之(集合框架)
- Java学习笔记33(集合框架七:Collections工具类)
- (38)Java学习笔记——集合框架 / Collections工具类
- 黑马程序员 java学习笔记——集合框架2
- 黑马程序员----Java集合框架学习笔记2 Map-工具类-泛型
- Java集合源码学习笔记(一)集合框架概览
- 06-java学习笔记-集合框架
- 【Java学习笔记】集合框架(一)
- (35)Java学习笔记——集合框架 / 增强for /静态导入 /可变参数
- Java集合框架学习笔记