各种Set/List集合类的性能总结
来源:互联网 发布:先知者软件官网 编辑:程序博客网 时间:2024/05/17 21:47
- 各Set实现类的性能分析
HashSet和TreeSet是Set的两个典型实现,HashSet的性能总是比TreeSet好(特别是最常用的添加、查询等操作),因为TreeSet需要额外的红黑树算法来维护集合元素的次序。只有当需要一个保持排序的Set时,才应该使用TreeSet,否则都应该使用HashSet.
HashSet还有一个子类:LinkedHashSet,对于普通的插入、删除操作,LinkedHashSet比HashSet要略微慢一点,这是由于维护链表所带来的额外开销造成的,但由于有了链表,遍历LinkedListSet会更快。
EnumSet是所有Set中性能最好的一个,但它只能保存同一个枚举类的枚举值作为集合元素。
Set的三个实现类都是线程不安全的。如果有多个线程同时访问一个Set集合,并且有超过一个线程修改了该Set集合,则必须手动保证该Set集合的同步性。通常可以通过Collections工具类的synchronizedSortedSet方法来“包装”该Set集合类。
- 各种线性表的性能分析
Java提供的List就是一个线性表接口,二ArrayList、LinkedList又是线性表的两种实现:基于数组的线性表和基于链的线性表。Queue代表了队列,Deque代表了双端队列(既可以作为队列使用,也可以作为栈使用)。
如果需要遍历List集合元素,对于ArrayLish集合,应该使用随机访问的方法(get)来遍历集合元素,这样性能更好;对于LinkedList集合,则应该采用迭代器(Iterator)来遍历集合元素。
如果需要经常执行插入、删除操作来改变包含大量数据的List集合大小,可以考虑使用LinkedList集合。使用ArrayList集合可能需要经常重新分配内部数组的大小,效果可能较差。
如果有多个线程需要同时访问List集合中的元素,开发者可考虑使用Collections将集合包装成线程安全的集合。
阅读全文
0 0
- 各种Set/List集合类的性能总结
- 集合set/map/list/vector 的总结
- 集合框架的学习总结List,Set
- 各种迷茫的集合。。collection、 list 、set 、map 。。
- 各种集合List Set Map的遍历方法
- Java内List集合和Set集合的总结
- (7) 集合之Set类、List类、Map类、HashSet和HashMap的性能
- 集合类的区别:list set map
- java中List、Set、Map集合的遍历方法总结
- java中List、Set、Map集合的遍历方法总结
- java中List、Set、Map集合的遍历方法总结
- Android List,Set,Map集合安全 集合区别 并发集合类性能分析
- JAVA中的集合类map、set、list精练总结
- Scala集合,序列(可变和不可变List),List各种函数的使用,不可变Set和可变Set,Map
- java集合总结-List/Set/Map/Queue
- java集合框架---List、Set总结
- java集合包List、Set、Map总结
- List,Set,Map集合使用方法总结
- Syntax error on tokens, delete these tokens
- 日志控制log4j的使用总结
- Java多态_动力节点Java学院整理
- 我的动画:线程控制下的数字“游戏”
- servlet 3 NIO
- 各种Set/List集合类的性能总结
- Go实战--golang实现MP4视频文件服务器(nareix/joy4)
- Droid_2017 笔记
- Windows访问计算集群常用操作
- Javaweb问题:Connections could not be acquired from the underlying database!
- Redux-form中textField设置为不可编辑
- 诗歌五 增广贤文(古人不见今时月,今月曾经照古人)
- 把二元查找树转变成排序的双向链表
- Examples of VHDL Conversions Numeric_Std and Std_Logic_Arith