请问HASHSET和TREESET有什么区别?

stslayer 2008-02-20 10:27:44
RT
...全文
2629 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
obullxl 2009-12-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kyo100900 的回复:]
先看看源码:

public class TreeSet <E>
    extends AbstractSet <E>
    implements SortedSet <E>, Cloneable, java.io.Serializable

public class HashSet <E>
    extends AbstractSet <E>
    implements Set <E>, Cloneable, java.io.Serializable

其中SortedSet中组合了一个:Comparator <? super E> comparator();

因此 TreeSet与HashSet最大区别在于排序.........
[/Quote]
很有说服力!!!!!
smartcatiboy 2009-12-25
  • 打赏
  • 举报
回复
Hashset不保留先后、大小和次序
你输入12345,遍历出来可能是31524

LinkedSet保留先后次序
你输入12345,遍历保证12345

TreeSet保留大小次序
你输入31524,遍历结果是12345

Map同
AspireHouse 2009-12-25
  • 打赏
  • 举报
回复
TreeSet查找更加迅速
liuxuejin 2009-12-24
  • 打赏
  • 举报
回复
如果真想深入理解,你得好好看数据结构!!
your_leftH 2009-12-19
  • 打赏
  • 举报
回复
TreeSet --> Tree
HashSet --> Hash
SambaGao 2009-12-19
  • 打赏
  • 举报
回复
很好
zuomingyu2 2009-12-19
  • 打赏
  • 举报
回复
学习了
yang677888 2009-12-19
  • 打赏
  • 举报
回复
HashMap和Hashtable的区别。
答案:HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都实现了Map接口,
主要区别在于HashMap允许空(null)键值(key)与空值(value),由于非线程安全,效率上可能高于Hashtable,Hashtable不允许有空(null)键值(key)与空值(value)。

http://topic.csdn.net/u/20091211/12/63a8e47b-a98f-4e59-b294-19dffd706a0b.html
wibnmo 2009-12-19
  • 打赏
  • 举报
回复
1.TreeSet实现 Set 接口,该接口由 TreeMap 实例支持。保证排序后的 set 按照升序排列元素。

2.HashSet类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证集合的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。
chiphuo 2008-10-28
  • 打赏
  • 举报
回复
1.HashSet无序集合,放入顺序与取出顺序不一致。

2.TreeSet自动排好序,而且必须放相同的类型,放不同的类型就会报错。
zhangfan123 2008-10-28
  • 打赏
  • 举报
回复
1、Treeset中的数据是自动排好序的,不允许放入null值

2、HashSet中的数据是无序的,可以放入null,但只能放入一个null,两者中的值都不能重复,就如数据库中唯一约束

3、HashSet要求放入的对象必须实现HashCode()方法,放入的对象,是以hashcode码作为标识的,而具有相同内容的String对象,hashcode是一样,所以放入的内容不能重复。但是同一个类的对象可以放入不同的实例
malligator 2008-02-23
  • 打赏
  • 举报
回复
一个是排序的,一个是不排序的

所以用要么放入TreeSet里面的对象都实现Comparable接口,要么创建TreeSet的时候制定Comparator
geniuschess235 2008-02-23
  • 打赏
  • 举报
回复
一个是排序的,一个是不排序的
xiaoben008 2008-02-20
  • 打赏
  • 举报
回复
学习,,,,,
kyo100900 2008-02-20
  • 打赏
  • 举报
回复
先看看源码:

public class TreeSet<E>
extends AbstractSet<E>
implements SortedSet<E>, Cloneable, java.io.Serializable

public class HashSet<E>
extends AbstractSet<E>
implements Set<E>, Cloneable, java.io.Serializable

其中SortedSet中组合了一个:Comparator<? super E> comparator();

因此 TreeSet与HashSet最大区别在于排序.........
treeroot 2008-02-20
  • 打赏
  • 举报
回复
区别很大
HashSet 是哈希表实现的,无序的结合,表现为检索(contains)的时间复杂度是 o(0)
TreeSet 是红黑树实现的,排序的集合

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧