Java TreeSet的使用
Comparable和Comparator的区别 :https://www.cnblogs.com/szlbm/p/5504634.html
参考博客:https://www.cnblogs.com/yzssoft/p/7127894.html
使用详解
import java.util.Comparator;
import java.util.TreeSet;
//Comparable和Comparator的区别 https://www.cnblogs.com/szlbm/p/5504634.html
//参考博客:https://www.cnblogs.com/yzssoft/p/7127894.html
public class TreeSetUse {
static class person implements Comparable<person>{
public String name;
public int age;
public person(String name,int age){
this.name=name;
this.age=age;
}
@Override
public int compareTo(person o) {
//按照年纪从小到大排序,name从小到大排序
if(o.age==this.age) {
return this.name.compareTo(o.name);//String类实现了compareTo方法
}else return this.age-o.age;
}
public String toString(){
return this.name+" "+this.age;
}
}
static class comparator implements Comparator<person>{
//从大到小排序,与person类的排序方式相反
// @Override
// public int compare(person o1, person o2) {
// return o2.compareTo(o1);
// }
@Override
public int compare(person o1,person o2){
if(o1.age==o2.age){
return o2.name.compareTo(o1.name);
}else return o2.age-o1.age;
}
}
public static void main(String[] args){
person p1=new person("p1",1);
person p2=new person("p2",2);
person p3=new person("p3",3);
person p4=new person("p4",4);
person p5=new person("p5",5);
person p6=new person("p6",6);
TreeSet<person> tree=new TreeSet<>(new comparator());
tree.add(p1);
tree.add(p5);
tree.add(p4);
tree.add(p3);
tree.add(p2);
tree.add(p6);
for(person p:tree){
System.out.println(p.toString());
}
}
}