1、创建类,同时设定内部比较规则
package com.wyq.Arr;
public class Pers implements Comparable<Pers>{
/**
* person类实现了Compatator接口
* 那么他具备一种能力,就是比较的能力
*/
private String name;
private Gender gender;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Gender getGender() {
return gender;
}
public void setGender(Gender gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Pers(String name, Gender gender, int age) {
super();
this.name = name;
this.gender = gender;
this.age = age;
}
public Pers() {
super();
}
@Override
public int compareTo(Pers o) {
//按照年龄进行比较
return this.age-o.getAge();
//字母的升序进行比较
// return this.name.compareTo(o.getName());
//按照字母的长度进行比较
// return this.name.length()-o.getName().length();
}
}
2、测试
package com.wyq.Arr;
import java.util.TreeSet;
public class TestPers {
public static void main(String[] args) {
//创建treeset对象的集合,明确了存储的对象的类型只能是pers类型
TreeSet<Pers> ts = new TreeSet<Pers>();
/**
* 因为TreeSet集合存储的元素的特点是:有序,唯一
* 需要存储的对象要具备比较规则
* 如果存储的自定义对象,不具备比较规则,那么程序就将产生类型转换异常
*/
Pers p1 = new Pers("张三",Gender.女,30);
Pers p2 = new Pers("李四",Gender.男,32);
Pers p3 = new Pers("王五",Gender.女,31);
Pers p4 = new Pers("马六",Gender.男,20);
ts.add(p1);
ts.add(p2);
ts.add(p3);
ts.add(p4);
System.out.println(ts.size());
for(Pers str:ts){
System.out.println(ts);
}
}
}
3、总结
omparable与Comparator接口
这两个接口都是具备比较大小的能力
Comparable内部比较器 :由需要比较的类(Person)去实现