Java集合Set性能分析
来源:互联网 发布:预防域名攻击 编辑:程序博客网 时间:2024/05/16 14:47
Set性能分析
HashSet 和 TreeSet
HashSet性能要好于TreeSet(特别是最常用的添加、查询元素等操作)
原因:因为TreeSet需要额外的红黑树算法维护集合元素的次序。只有需要一个保持排序的Set时,才应该使用TreeSet,否则都应该使用HashSet。
HashSet 和 LinkedHashSet
- HashSet 还有一个子类:LinkedHashSet,对于普通的插入,删除操作,LinkedHashSet比HashSet要略微慢一点,这是由维护链表所带来的额外开销造成的,但由于有了链表,遍历LinkedHashSet会更快。
EnumSet是所有Set实现类中性能最好的,但它只能保存同一个枚举类的枚举值作为集合元素。
注意:
Set的三个实现类HashSet、TreeSet和EnumSet都是线程不安全的。
如果有多个线程同事访问一个Set集合,并且有超过一个线程修改了该Set集合,则必须手动保证该Set集合的同步。
同步:
解决:通常通过Collections工具类的synchronizedSortedSet方法来“包装”该Set集合。
注意:此操作最好在创建时进行,以防止对Set集合的意外非同步访问。
示例:
SortedSet set = 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)
这个方法返回一个同步的(线程安全的)有序映射所指定的有序映射支持synchronizedSortedSet(SortedSet<T> s)
这个方法返回一个同步的(线程安全的)有序set由指定的有序set支持。JDK1.8
synchronizedNavigableMap(NavigableMap<K,V> m)
synchronizedNavigableSet(NavigableSet<T> s
)
Things won are done; joy’s soul lies in the doing.
得到即是完结,快乐的精髓在于过程。
- Java集合Set性能分析
- [疯狂Java]集合:EnumSet、各Set性能分析(选择)
- Java:集合类性能分析
- Java集合类性能分析
- Java:集合类性能分析
- Java:集合类性能分析
- Java 集合框架 性能分析
- Java:集合类性能分析
- Java集合类性能分析
- java集合框架之Set集合实现类性能对比
- Java 集合框架分析:Set(1)
- java集合---set集合
- JAVA集合-Set集合
- Java集合----Set集合
- Android List,Set,Map集合安全 集合区别 并发集合类性能分析
- Set集合分析
- java集合框架以及性能分析
- Java集合类性能分析2
- 正则判断
- 介绍AIDL
- JS立即执行函数理解
- nginx 和 Tomcat 整合
- 设计模式之观察者模式
- Java集合Set性能分析
- js数组操作
- 将多个csv文件合并到一个csv中
- Linux下so库的编译
- MakeFile一篇通俗易懂的好文章
- cisco 路由器 ADSL拨号上网配置
- 阻塞队列
- 两代 K Kt inect 对比
- hdu 3232 Crossing Rivers