public class HashSetTest {
public static void main(String[] args){
HashSet<Student_> hs = new HashSet<Student_>();
TreeSet<Student_> ts = new TreeSet<Student_>();
hs.add(new Student_(1,"langhua"));
hs.add(new Student_(2,"xizh"));
hs.add(new Student_(2,"xizh"));
ts.add(new Student_(1,"langhua"));
ts.add(new Student_(2,"xizh"));
ts.add(new Student_(2,"xizh"));
Iterator<Student_> it = ts.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
class Student_ implements Comparable{
int num;
String name;
public Student_(int num,String name){
this.num = num;
this.name = name;
}
public String toString(){
return num+":"+name;
}
public boolean equals(Object obj) {
Student_ s = (Student_) obj;
return num==s.num && name.equals(s.name);
}
public int hashCode() {
return num*name.hashCode();
}
public int compareTo(Object o) {
Student_ s = (Student_) o;
int results = num > s.num ? 1 : (num ==s.num ? 0 : -1);
if(results==0){
return name.compareTo(s.name);
}
return results;
}
}
//HashSet要重写equals()和hashCode()方法
//TreeSet要implements Comparable接口
//他们的底层实现是不一样的,一个是HashTable 另一个是SortMap
//TreaSet的构造方法中还可以用TreeSet(Comparator c);去构造个TreeSet对象,这样就不用实现Comparable接口了
1、Treeset中的数据是自动排好序的,不允许放入null值
2、HashSet中的数据是无序的,可以放入null,但只能放入一个null,两者中的值都不能重复,就如数据库中唯一约束
3、HashSet要求放入的对象必须实现HashCode()方法,放入的对象,是以hashcode码作为标识的,而具有相同内容的String对象,hashcode是一样,所以放入的内容不能重复。但是同一个类的对象可以放入不同的实例,TreeSet就算实现了HashCode()方法也不能放出重复的。TreeSet里面判断是否相同看对象的compareTo方法
分享到:
相关推荐
在Java编程语言中,集合框架是处理数据的重要组成部分,其中`HashSet`和`TreeSet`是两种常用的Set接口实现类。它们各自具有独特的特性和用途,理解它们的区别对于编写高效且正确的代码至关重要。 首先,`HashSet`是...
与HashSet和TreeSet的关系不大,但在实际的服务器部署和Web应用开发中,了解IIS的配置和管理对于IT专业人员来说是必要的技能。 总结一下,HashSet和TreeSet的主要区别在于: 1. 存储结构:HashSet使用哈希表,...
Set是java中一个不包含重复元素的collection。更正式地说,set 不包含满足e1....HashSet与TreeSet都是基于Set接口的实现类。其中TreeSet是Set的子接口SortedSet的实现类。Set接口及其子接口、实现类的结构如下所示。
HashSet和TreeSet使用方法的区别解析 HashSet和TreeSet都是Java集合框架中的Set接口实现,用于存储不重复的元素。但是,它们在使用方法和实现机理上有很大的区别。 首先,从使用方法上讲,HashSet和TreeSet都可以...
Java HashSet 和 TreeSet 的区别详解 HashSet 和 TreeSet 是 Java 中两个常用的集合类,它们都实现了 Set 接口,但它们之间有很大的区别。本文将详细介绍 HashSet 和 TreeSet 的区别,帮助大家更好地理解和使用这些...
本文主要探讨了三种基于Set接口的实现类:HashSet、LinkedHashSet和TreeSet,它们各自有不同的特性和使用场景。 首先,HashSet是最基础的Set实现,它不保证元素的特定顺序,也不保证在多次操作后保持元素的顺序不变...
在Java编程语言中,集合框架是处理对象组的重要工具,其中`HashSet`和`TreeSet`是两种常见的接口实现类,分别提供了不同的功能和性能特性。本教程将深入探讨这两个集合类以及它们与比较器(Comparator)的关系。 ...
比较遗憾的是,TreeSet 虽然实现起来也比较简单,但它有着和 HashSet 一样的问题,会自动排序 5:LinkedHashSet去重(有序) 从代码和执行结果可以看出,LinkedHashSet 是到目前为止,实现比较简单,且最终生成的新...
与`TreeMap`类似,`TreeSet`也支持`headSet()`、`tailSet()`和`subSet()`等方法,用于返回集合的一部分。 ### HashSet `HashSet`是基于哈希表实现的Set(集合)实现,它不保证集合中元素的任何特定顺序。`HashSet`...
6. **HashSet与TreeSet对比**: - HashSet的性能通常优于TreeSet,因为其内部实现简单,但不保证元素的排序。 - TreeSet根据元素的自然排序或比较器排序,保持元素有序,但插入和查询可能较慢。 7. **Map接口及其...
**HashSet与TreeSet的区别** - 数据结构:HashSet使用哈希表,元素无序且不可重复;TreeSet使用红黑树,元素自动排序且不可重复。 - 操作性能:HashSet插入和查找速度快,但不保证元素顺序;TreeSet插入和查找速度略...
8. **HashSet与TreeSet**:HashSet存储元素时,元素必须重写equals()和hashCode()方法以确保唯一性。而TreeSet则要求元素实现Comparable接口或传入Comparator比较器,用于元素的排序。 **双列集合 Map** 9. **Map...
2. **HashSet与TreeSet的区别**:HashSet内部使用HashMap存储元素,不保证元素顺序,允许null值;TreeSet使用TreeMap,按照元素自然排序或自定义比较器排序,不允许null值。 3. **HashMap与TreeMap的区别**:...
3. 探索Set接口,实现元素去重功能,并比较HashSet与TreeSet的差异。 4. 深入理解Map接口,实现键值对的存取和查找,比较HashMap与TreeMap的性能特点。 5. 应用集合框架解决实际问题,如模拟银行账户系统,使用Map...
4. **HashSet与TreeSet的区别**:HashSet内部基于HashMap实现,不保证元素顺序,但插入和查找速度较快。TreeSet基于红黑树,能保持元素排序,但插入和查找速度相对较慢。 5. **HashMap与HashTable的区别**:HashMap...
3. **HashSet与TreeSet**: - HashSet基于哈希表,插入和查找速度快,但元素无特定顺序。 - TreeSet内部实现为红黑树,元素按自然顺序或自定义比较器排序,查询速度快,但插入速度略慢。 4. **HashMap与TreeMap**...
4. **HashSet与TreeSet的区别** - HashSet基于HashMap实现,元素无序,不保证元素顺序,不允许有重复元素。 - TreeSet基于TreeMap,元素自动排序,不允许有重复元素,元素之间通过compareTo()方法比较。 5. **...
3. **HashSet与TreeSet**: - HashSet内部基于HashMap实现,不保证元素顺序,插入和查找速度较快。 - TreeSet基于红黑树,保证元素排序,插入和查找时间复杂度为O(logn)。 4. **HashMap与TreeMap**: - HashMap...