compare(User o1, User o2)
比较器默认输出:-1 表示o1大,1 表示02大,0 表示相等
比较器的两种实现方式:
第一种:外部比较器,定义一个类实现Comparator接口,重写compare方法。需要用到时就传值。
TreeSet<User> users = new TreeSet<>(new MyComparator());
第二种:内部比较器,User类实现Comparable接口,重写compareTo方法。
TreeSet<User> users = new TreeSet<>();
根据比较器进行排序:
T[] o3;//这样写是错的,java中无法创建一个泛型数组
ArrayList<T> o3;
Array.sort(o3,comparator)
大根堆实现
默认小根堆
PrioritQueue<Integer> heap =new PriorityQueue<>();
添加外部比较器
public static class Mycomp implements Comparator<Integer> {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
}
大根堆
PriorityQueue<Integer> heap = new PriorityQueue<>(new Mycomp());