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