java 排序 comparable_JAVA-排序-comparable 相关问题

public int compareTo(Object O){

if(O instanceof person1){

person1 person = (person1) O;

int age = this.age-person1.age;

if(age == 0)

return this.name.compareTo(O.name);

return age;

}else{

throw new ClassCastException("不能转为PERSON类型");

}

}

如果以上代码还是不行的话,那就是你的hashCode的问题了。

我给你写了一个例子,你自己看下吧。import java.util.*;

public class TreeSetDemo{

public static void main(String[] args){

TreeSet set = new TreeSet();

set.add(new Person("BB",19));

set.add(new Person("AA",12));

set.add(new Person("EE",14));

set.add(new Person("CC",14));

set.add(new Person("DD",15));

Iterator it = set.iterator();

while(it.hasNext()){

System.out.println(it.next());

}

}

}

class Person implements Comparable{

private String name;

private int age;

public Person(String name, int age){

this.name = name;

this.age = age;

}

public int compareTo(Person p){

int paixu = this.age - p.age;

if(paixu == 0)

return this.name.compareTo(p.name);

else

return paixu;

}

public String toString(){

return this.name+"="+this.age;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值