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方法
分享到:
相关推荐
Set是java中一个不包含重复元素的collection。更正式地说,set 不包含满足e1....HashSet与TreeSet都是基于Set接口的实现类。其中TreeSet是Set的子接口SortedSet的实现类。Set接口及其子接口、实现类的结构如下所示。
HashSet和TreeSet_围墙之外.rar
NULL 博文链接:https://elvin-chu.iteye.com/blog/1942033
主要介绍了详解Java中HashSet和TreeSet的区别的相关资料,需要的朋友可以参考下
day18-集合-中(HashSet&TreeSet&比较器).zip
主要介绍了HashSet和TreeSet使用方法的区别解析,具有一定借鉴价值,需要的朋友可以参考下
java集合在日常开发中经常用到,对基础的掌握尤其重要,其中List,Set,Map的作用以及使用的场景和分类描述,其中Arraylist 与 LinkedList 区别,HashSet与TreeSet与LinkedHashSet对⽐,LinkedHashMap和HashMap,...
简单的说,HashSet集合判断两个元素相等的标准是两个对象通过equals方法比较相等,并且两个对象的hashCode()方法返回值相 等注意,如果要把一个对
比较遗憾的是,TreeSet 虽然实现起来也比较简单,但它有着和 HashSet 一样的问题,会自动排序 5:LinkedHashSet去重(有序) 从代码和执行结果可以看出,LinkedHashSet 是到目前为止,实现比较简单,且最终生成的新...
treemap treeset hashset hashmap 简要介绍
1) 掌握Java集合框架的概念以及几种具体实现:ArrayList, LinkedList, HashSet, TreeSet, PriorityQueue; 2) 掌握Java集合框架的映射的概念以及映射的两种基本实现:HashMap,TreeMap; 3)掌握枚举类型以及枚举集...
OneSlide OneSlide是一种学习格式,其中一张幻灯片涵盖了一个技术主题。 js:未定义vs空 js:原始类型转换 js:参考和实例 js:迭代:内循环/外循环 算法:CAP定理 ... Java:设置:HashSet与TreeSet
这篇集合总结一共包括十二节,介绍了一些接口和实现类的底层源码以及基本的增加、删除元素等的操作(包括List、Map、Set接口、ArrayList、Vector、LinkedList、HashSet、TreeSet、HashMap、TreeMap等实现类)。...
HashSet 与 TreeSet 与 LinkedHashSet HashMap vs. TreeMap vs. HashTable vs. LinkedHashMap 按值排序地图 高效计数器 HashMap 常用方法。例如,按值排序 深入理解Arrays.sort(T[], Comparator < ? super T > c)...
任务2: 检查集合的速度差异(ArrayList与LinkedList,HashSet与TreeSet,HashMap与TreeMap); b。 创建用于确定花的层次结构的控制台应用程序。 创建几个花对象。 用价格决定收集一束。 使用OOP方法进行应用程序...
主要介绍了从源码的角度浅析HashMap、TreeMap元素的存储和获取元素的逻辑;从Map与Set之间的关系浅析常用的Set中元素的存储和判断是否重复的逻辑,需要的朋友可以参考下
Java数据结构--13.Java8数据结构TreeSet 前⾔ ,上⼀篇中对 Set 接⼝最终实现类 HashSet 与 LinkedHashSet 做了介绍与分析,本篇将对另⼀种 Set 接⼝的最终实现类 TreeSet 进⾏ 介绍与分析。 先来看下 TreeSet 完整...
java HashSet 集合排序,需要通过利用TreeSet集合排序。2013-10-30。