Set 的各个实现类的性能分析

Posted yizhihaha01

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Set 的各个实现类的性能分析相关的知识,希望对你有一定的参考价值。

HashSet 和TreeSet是Set的典型实现。HashSet 比TreeSet性能好,TreeSet需要额外通过红黑树算法维护集合 的顺序。除了需要维护集合的顺序外,其他的都优先用HashSet 。

LinkedHashSet 比HashSet 慢,但是因为有链表,所以遍历他就更快。

EnumSet是性能最好的,但是只能保存同一个枚举类的成员作为元素。

注意:该三个实现类都不是线程安全的。需要手动保证Set集合的同步

解决:Collections的工具类synchronizedSortedSet,包装下Set集合

例子:

  SortedSet s =Collections.synchronizedSortedSet(new TreeSet());

Collections 工具类其他同步方法:

    • synchronizedCollection(Collection<T> c) 
      这个方法返回一个同步的(线程安全的)集合的指定集合的支持。
    • synchronizedList(List<T>list) 
      这个方法返回由指定列表支持的同步(线程安全的)列表。
    • synchronizedMap(Map<K,V> m) 
      这个方法返回一个同步的(线程安全)由指定映射支持。
    • synchronizedSet(Set<T> s) 
      这个方法返回一个同步的(线程安全的)集由指定set支持。
    • synchronizedSortedMap(SortedMap<K,V> m) 
      这个方法返回一个同步的(线程安全的)有序映射所指定的有序映射支持 

以上是关于Set 的各个实现类的性能分析的主要内容,如果未能解决你的问题,请参考以下文章

代码片段 - Golang 实现集合操作

spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段

Android获取各个应用程序的缓存文件代码小片段(使用AIDL)

java 代码片段

有条件地导入 python 类的片段

OC1(类和对象)