2.04_Set集合,比较器

HashSet:
非重复性,允许有null,不是线程安全的

LinkedHashSet:,继承了hashset
保持插入顺序

TreeSet:
带有排序功能,底层为二叉树结构,不允许有null,不是线程安全


public static void demo() {
        TreeSet<Person> ts = new TreeSet<>();
        ts.add(new Person("张三", 23));
        ts.add(new Person("李四", 13));
        ts.add(new Person("周七", 13));
        ts.add(new Person("王五", 43));
        ts.add(new Person("赵六", 33));
        
        System.out.println(ts);
}
//  类必须实现Comparable接口,才能实现排序
public class Person implements Comparable<Person> {
    private String name;
    private int age;
    ...
    public int compareTo(Person o) {
        return 0;                //当compareTo方法返回0的时候集合中只有一个元素
        return 1;                //当compareTo方法返回正数的时候集合会怎么存就怎么取
        return -1;                //当compareTo方法返回负数的时候集合会倒序存储
    }
}

///Comparable 与Comparator 比较
///Comparable为类的内部比较器,
///而Comparator需要生成外部比较器,供其他方法使用

     private static class AscAgeComparator implements Comparator<Person> {
         
         @Override 
         public int compare(Person p1, Person p2) {
             return p1.getAge() - p2.getAge();
         }
     }
     ArrayList<Person> list = new ArrayList<Person>();
         // 添加对象到ArrayList中
     list.add(new Person("ccc", 20));
     list.add(new Person("AAA", 30));
     list.add(new Person("bbb", 10));
     list.add(new Person("ddd", 40));

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

相关阅读更多精彩内容

友情链接更多精彩内容