1.常规类型
TreeSet的自然排序是根据元素的大小进行升序排序,若想自己定制排序,比如降序,就可以使用Comparator接口。
@Test
//自动排序
public void treeSets() {
Set<Integer> set = new TreeSet<>();
set.add(2);
set.add(5);
set.add(25);
set.add(15);
set.add(10);
System.out.println(set);
}
输出:[2, 5, 10, 15, 25]
2.实体类排序
上代码
public class Demo15 {
public static void main(String[] args) {
/**
* 实现定制排序,提供Comparator对象,负责排序逻辑
*/
Set<Man> mans = new TreeSet<>(new MyComparator());
mans.add(new Man(11));
mans.add(new Man(33));
mans.add(new Man(22));
mans.add(new Man(131));
mans.add(new Man(110));
System.out.println(mans);
}
}
class Man {
private Integer age;
public Integer getAge() {
return this.age;
}
public void setAge(Integer age) {
this.age = age;
}
public Man(Integer age) {
super();
this.age = age;
}
@Override
public String toString() {
return "Man[age:" + age + "]";
}
}
class MyComparator implements Comparator<Man> {
//顺序排序
//如果需要降序排序,将返回值更改
@Override
public int compare(Man o1, Man o2) {
if (o1.getAge() > o2.getAge()) {
return 1;//降序:-1
}
if (o1.getAge() < o2.getAge()) {
return -1;//降序:1
}
return 0;
}
}
输出:[Man[age:11], Man[age:22], Man[age:33], Man[age:110], Man[age:131]]
TreeSet的自然排序是根据元素的大小进行升序排序,若想自己定制排序,比如降序,就可以使用Comparator接口。