黑马程序员技术交流社区

标题: HashSet TreeSet EnumSet中哪个性能更好? [打印本页]

作者: 琚臻臻    时间: 2011-7-18 14:30
标题: HashSet TreeSet EnumSet中哪个性能更好?
HashSet TreeSet EnumSet中哪个性能更好?
他们能多线程访问吗?怎么保证他们多线程修改的同步性?
作者: 匿名    时间: 2011-7-18 14:43
HashSet性能比TreeSet好(在添加查询元素的操作的时候)
TreeSet要用额外红黑树算法来维护集合元素的次序,只有当需要一个保持排序的Set的时候才应该用TreeSet,否则都应该用HashSet


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

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

如:SortedSet s =Collections.synchronizedSortedSet(new TreeSet(....))
作者: 匿名    时间: 2011-7-22 12:24
HashSet的性能基本上比TreeSet好,特别在添加和查询元素时。TreeSet的好处是可以进行排序。对于添加元素LinkHaskSet的代价更高
作者: 匿名    时间: 2011-7-22 15:33
TreeSet,TreeMap插入元素,都会排序。性能肯定低。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2