A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 琚臻臻 黑马帝   /  2011-7-18 14:30  /  4084 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

HashSet TreeSet EnumSet中哪个性能更好?
他们能多线程访问吗?怎么保证他们多线程修改的同步性?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

3 个回复

倒序浏览
黑马网友  发表于 2011-7-18 14:43:56
沙发
HashSet性能比TreeSet好(在添加查询元素的操作的时候)
TreeSet要用额外红黑树算法来维护集合元素的次序,只有当需要一个保持排序的Set的时候才应该用TreeSet,否则都应该用HashSet


EnumSet是所有Set实现类中性能最好的,但它只能保持同一个枚举类的枚举值作为集合的元素

HashSet、TreeSet和EnumSet都是线程不安全的,如果有多个线程同时访问一个Set集合,并且超过一条线程修改了该Set集合,则必须手动保持该Set集合的同步性,通常通过Collections工具类的synchronizedSortedSet方法来包装该集合,并且最好在创建集合的时候操作,防止对Set集合的意外非同步性访问

如:SortedSet s =Collections.synchronizedSortedSet(new TreeSet(....))

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-22 12:24:27
藤椅
HashSet的性能基本上比TreeSet好,特别在添加和查询元素时。TreeSet的好处是可以进行排序。对于添加元素LinkHaskSet的代价更高

评分

参与人数 1技术分 +1 收起 理由
admin + 1 勉强给1分吧

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-22 15:33:19
板凳
TreeSet,TreeMap插入元素,都会排序。性能肯定低。

评分

参与人数 1技术分 +1 收起 理由
xiaolong + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马