代码:
import java.util.Iterator;
import java.util.TreeSet;
public class TreeSetClass {
public static void main(String[]arge){
//实例TreeSet类
TreeSet treeSet= new TreeSet();
//add添加自定义对象
treeSet.add(new AtterM(20,"abc"));
treeSet.add(new AtterM(30,"bbc"));
treeSet.add(new AtterM(30,"bbc"));
treeSet.add(new AtterM(21,"bbf"));
Iterator iterator=treeSet.iterator();
//用迭代器的方法hasNext() 判断是否有下一个值
while(iterator.hasNext()){
//指定类型 每次获取值next()都会刷新
AtterM at=(AtterM)iterator.next();
System.out.println(at.getage()+at.name);
}
}
}
//实现 Comparable 接口
class AtterM implements Comparable{
int age;
String name;
//自定义方法添加对象
public AtterM(int age,String name){
this.age= age;
this.name=name;
}
public int getage(){
return age;
}
public String getname(){
return name;
}
@Override
public int compareTo(Object obj) {
AtterM A=(AtterM)obj;
//输出比较的对象
System.out.println(this.age+","+this.name+"....compareto....."+A.age+","+A.name);
//判断比较对象是否this.age>A.age
//大于返回正数
if(this.age>A.age){
return 1;
}
if(this.age==A.age){
//判断名称是否相同相同返回
//相同返回0并且在TreeSet不添加
//能使用compareTo方法是Comparable继承String接口里的compareTo
return this.name.compareTo(A.name);
}
//否则返回负数
return -1;
}
}
结果:
说明:使用Comparable使每个元素都具有比较性,Comparable接口是在“内部”比较的。
需要修改源代码。
使用Comparable,比较方式比较繁琐是和集合里的每一个对象来比较大小。