美文网首页
Java-SortedSet

Java-SortedSet

作者: hello_world_cxm | 来源:发表于2021-01-10 21:44 被阅读0次
package day01_10;

import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;

public class Test_SortedSet {

    public static void main(String[] args) {
        //返回0 则代表两个字符串相等
        //System.out.println("hello".compareTo("hello"));
        //TreeSet是SortedSet (Set的子接口)的实现类
        Comparator<Worker> k = new Comparator<Worker>(){
            //if w1.age-w2.age:负数
            //if w1.age-w2.age:0
            //if w1.age-w2.age:正数
            //如果比较两个对象是否相同,无非就是比较属性,这里就是比较name和age是否相等,返回0。如果相等则表示
            //是同一个对象
            @Override
            public int compare(Worker w1, Worker w2) {
                //w1.age-w2.age 如果返回的是0 那么表明w1和w2对象相同 则就会去从 但是容易造成误杀
                //return w1.age-w2.age;
                if (w1.age!=w2.age) return w1.age-w2.age;  //如果年龄相等,就进一步比较姓名
                else return w1.name.compareTo(w2.name);
            }
        };
        //因为要排序的是自定义的对象,所以要给TreeSet传入比较器,要不然就会报错
        Set<Worker> c= new TreeSet<>(k); 
        Worker w1=new Worker("cxm",23);
        Worker w2=new Worker("cxk",24);
        Worker w3=new Worker("cxmfe",23);
        Worker w4=new Worker("cxq",45);
        Worker w5=new Worker("cxu",19);
        c.add(w1);
        c.add(w2);
        c.add(w3);
        c.add(w4);
        c.add(w5);
        for(Worker x:c) {
            System.out.println(x);
        }
    }

}
class Worker{
    String name;
    int age;
    public Worker(String name, int age) {
        this.name = name;
        this.age = age;
    }
    @Override
    public String toString() {
        return "Worker [name=" + name + ", age=" + age + "]";
    }
    
    
}

相关文章

网友评论

      本文标题:Java-SortedSet

      本文链接:https://www.haomeiwen.com/subject/juilaktx.html