Java工具类学习笔记
来源:互联网 发布:css3动画和js动画 编辑:程序博客网 时间:2024/05/01 00:59
- 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一块内存后,再做合并操作。
- 优点:
- HashSet
- 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方法设置)
- ArrayList
- Map
- ConcurrentHashMap
优点:
基于二叉数 提供比较快速的get, add,iterate方法。默认大小的16.
它是线程安全
缺点:
如果大小超过设定的大小时,效率会非常低。它会重新申请内存空间(原来空间的两倍),同时把原来的值复制到新内存空间上。
- ConcurrentHashMap
- Java工具类学习笔记
- Java工具类学习笔记
- Java工具类学习笔记
- Java工具类学习笔记
- Java学习笔记之数组工具类
- Java学习笔记--Collections工具类
- 学习笔记1. Java工具类
- Java学习笔记之Arrays工具类
- [学习笔记]JAVA生成Excel工具类
- JAVA学习笔记--JDK工具
- 黑马程序员---java学习笔记之集合工具类
- Java学习笔记-Collections和Arrays工具类
- JAVA学习笔记(五十一)- DBUtil 封装数据库工具类
- [学习笔记]Java生成简单的PDF工具类
- JAVA学习笔记——Collection工具类Collections
- Java学习笔记6——Math工具类
- Java学习工具类
- java内存监控工具JProfiler学习笔记
- 自已作的屏保程序
- 续:minis3c2440嵌入式开发板学习之u-boot移植(二)
- android之ImageView
- Quake3引擎
- 字符串类型转换
- Java工具类学习笔记
- 用C画正弦曲线
- 停止通过startService()方式启动的service的两种方法
- sql查询库中所有表的结构
- web.xml中数据库连接配置
- (地道英语)嘴边话儿
- VS2005 中error C2440: 如无法从“const char [N]”转换为“LPCWSTR” 的一点总结
- 第四章:数组和指针
- 多线程渲染技术