------- 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培训、期待与您交流! ----------