美文网首页
2.04_Set集合,比较器

2.04_Set集合,比较器

作者: RockyLuo_290f | 来源:发表于2019-01-05 22:11 被阅读0次

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());
``

相关文章

网友评论

      本文标题:2.04_Set集合,比较器

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