package test;
//Comparable 使对象本身具有可比性,这种方式称为元素的自然顺序或默认顺序
//Comparator 元素自身不具备比较性或者比较性不是所需要的,在集合初始化让其具有比较性 (更实用)
import java.util.*;
//class
public class TreeSetDemo {
public static void main(String[] args) {
TreeSet<Student> st=new TreeSet<Student>(new MyComparator());
st.add(new Student("bca",23));
st.add(new Student("bca",23));
st.add(new Student("abc",29));
st.add(new Student("dcba",24));
for(Iterator<Student> it=st.iterator();it.hasNext();)
{
Student p=it.next();
System.out.println(p.getName()+"==="+p.getAge());
}
}
}
class Student implements Comparable<Student> //实现了接口必须实现compare();
{
private String name;
private int age;
Student(String name,int age)
{
this.name=name;
this.age=age;
}
String getName()
{
return name;
}
int getAge()
{
return age;
}
@Override
public int compareTo(Student st)//实现compare方法
{
if(this.age>st.age)
return 1;
if(this.age==st.age)
return 0;
return -1;
}
}
//Object类实现了equail();所以实现接口以下时只需对compare()重写即可
class MyComparator implements Comparator<Student>//实现了接口必须实现compare();
{
@Override
public int compare(Student s1,Student s2)
{
int num=s1.getName().compareTo(s2.getName());
if(num==0)
{
return new Integer(s1.getAge()).compareTo(new Integer(s2.getAge()));//Integer 类实现了Comparable接口
// if(s1.getAge()>s2.getAge())
// return 1;
// if(s1.getAge()==s2.getAge())
// return 0;
// return -1;
}
return num;
}
}