黑马程序员_TreeSet集合存储自定义对象


 ------- android培训java培训、期待与您交流! ----------

package 演示练习;

import java.util.*;
//思路:TreeSet集合自带排序功能,其实底层调用的就是所存对象的Equats方法,而如果自定义对象时,有的对象内在Equals方法是继承的Object的equals方法,但此方法是Object根类为比较
//子类对象hash地址是否相同,而设定,所以有两种方式可以使自定的元素添加到TreeSet集合中,1,就是实现comparable并要覆写接口compareTo方法,使对象具备比较性,2,就是创建一个带有比较器的TreeSet集合
//使集合本身带有比较功能,但必须限定要存入比较的对象可以调用此比较器中的方法,这就使存入的元素必须是设定比较器的泛型本类或者子类对象;
class rencomparator implements Comparator<ren>//此处限制泛型ren的本类或者子类,防止传入其他类型的数据,造成存储失败
{
public int compare(ren a,ren b)
{
if(a.getage()==b.getage())
return a.getname().compareTo(b.getname());
return a.getage()-b.getage();

}
}
/*
class ren implements Comparable<ren>//此处限制泛型ren的本类或者子类,防止传入其他类型的数据,造成存储失败
{
private String name;
private int age;
ren(String name,int age)
{
this.name=name;
this.age=age;
}
public String getname()
{
return name;
}
public int getage()
{
return age;
}
public int compareTo(ren a)


if( this.getname().compareTo(a.getname())==0)
return this.getage()-a.getage();
return this.getname().compareTo(a.getname());
}








}
class xuesheng extends ren
{
xuesheng(String name,int age)
{
super(name,age);
}
public void study()
{
yanshi.sopl("好好学习");
}

}
class worker extends ren
{
worker(String name,int age)
{
super(name,age);
}
void work()
{
yanshi.sopl("为社会做贡献");
}
}


*/




public class TreeSet集合存储自定义对象 {


public static void main(String[] args) {
// TODO 自动生成的方法存根
TreeSet ts=new TreeSet(Collections.reverseOrder(new rencomparator()));
//ArrayList ts=new ArrayList();
ts.add(new ren("zhang三",23));
ts.add(new xuesheng("zhang三",26));
ts.add(new ren("li四",28));
ts.add(new worker("song六",19));
ts.add(new ren("lin九",12));
ts.add(new ren("wang五",19));
//ts.add("hjkalsjndk");
//yanshi.sopl(ts);
//Collections.reverse(ts);
Iterator<ren> it=ts.iterator();
while(it.hasNext())
{ren a=it.next();
  yanshi.sopl(a.getname()+"--"+a.getage());}






}
}
 ------- android培训java培训、期待与您交流! ----------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值