TreeSet
treeSet 是有序数列,存系统数据时自动根据asc码排序,存自己定义的对象时要实现接口Comparable<>接口,并重写comparaTo方法(在方法内定义排序规则)
import java.util.Objects;
import java.util.TreeSet;
public class ddd {
public static void main(String[] args) {
TreeSet<Person> treeSet=new TreeSet<>();
Person p1=new Person("张三",18);
Person p2=new Person("李四",19);
Person p3=new Person("麻子",19);
treeSet.add(p1);
treeSet.add(p2);
treeSet.add(p3); //set不存储相同数据,p3存不进去(根据自己定义的原则比较)
for (Person p:treeSet) {
System.out.println(p); // 输出结果: Person{name='张三', age=18}
} // Person{name='李四', age=19}
}
static class Person implements Comparable<Person>{
private String name;
private int age;
@Override
public int compareTo(Person o) {
//this 与 o 比较
//返回的数据:负数this小/零相等/正数this大
/*if(this.age>o.age){
return 1;
}else if(this.age==o.age){ //自己根据需要定义
return 0;
}
return -1;*/
return 0;
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() { //不重写的话打印的只是地址
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
//comparetor是当对compareble 的compareTo方法不满意时在外部实现,并重写compare方法
/*static class PersonComparetor implements Comparator<Person> {
@Override
public int compare(Person o1, Person o2) {
return 0; //需加入自定义比较原则
}
}*/
}