2.04_Set集合,比较器

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

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

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


public static void demo() {
        TreeSet 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 {
    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 {
         
         @Override 
         public int compare(Person p1, Person p2) {
             return p1.getAge() - p2.getAge();
         }
     }
     ArrayList list = new ArrayList();
         // 添加对象到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());
``

你可能感兴趣的:(2.04_Set集合,比较器)