java SE复习笔记56

本文介绍了TreeSet的基本使用方法,包括如何向TreeSet中添加元素、元素的自然排序及自定义排序方式。此外还探讨了自定义类实现Comparable接口的具体实现细节。
TreeSet:
1>向TreeSet 中添加的元素必须是同一种类型的
2>可以按照添加进元素的指定的顺序遍历,像String 包装类等,按默认从小到大的顺序遍历。
3>第一种排序方式:当想TreeSet 中添加自定义的类型时,我们需要自定义类实现Comparable 接口,并实现抽象方法compareTo方法,在这个方法中,指明按照哪个自定义属性进行排序(自然排序)
Set s = new HashSet();
s.add("GG");
s.add("HH");
s.add("AA");  
s.add("BB");
System.out.println(s);
AA  BB  GG HH
//当Person 类没有实现Comparable 接口时,添加会出现异常
s.add(new Person("CC",23));
s.add(new Person("DD",22));
s.add(new Person("AA",19));


下面的方法是Person implements Comparable之后实现的
public int compareTo(Object o){
if(o instanceof Person){
Person p = (Person)o;
return this.name.compareTo(p.name);  //这里调用了字符串 已经重写的comparaTo()方法
}
return 0;
}
以上写法有弊端:当我们向TreeSet中添加自定义类的对象时,先调用compareTo()方法,如果返回0,虽然仅是某个属性一样,但是会认为这两个对象一样,那么后一个对象就不会被添加进去了。所以我们需要根据实际情况更加具体的去比较。
>要保证 compareTo() hashCode() equals() 三者的一致性
public int compareTo(Object o){
if(o instanceof Person){
Person p = (Person)o;
int i = this.name.compareTo(p.name);  //这里调用了字符串已经重写的comparaTo()方法
if(i == 0){
return this.age.compareTo(p.age);
}else
return i;
}
return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值