Java-SortedSet

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 + "]";
    }
    
    
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容