//由于赫夫曼树需要对数的根节点排序,因此需要实现comparable接口,就能直接使用Collection.sort方法了
public class Node implements Comparable<Node>{
public int val;
public Node left;
public Node right;
public Node(int val) {
this.val = val;
}
@Override
public String toString() {
return "Node{" +
"val=" + val +
'}';
}
@Override
public int compareTo(Node o) {
return this.val - o.val; //this-o为从小到大排序,反过来为从大到小
}
}
int compare(T o1, T o2)和上面的x.comparaTo(y)类似,定义排序规则后,返回正数、负数和0,分别代表大于、小于和等于。
比如,对一个Integer类型的数组的排序方式进行重写,使其在sort后按降序排列
public class Test {
public static void main(String[] args) {
Integer[] a = {3,2,7,4,0,6,5};
Arrays.sort(a);
System.out.print("重写前:");
System.out.println(Arrays.toString(a));
Arrays.sort(a, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
});
System.out.print("重写后:");
System.out.println(Arrays.toString(a));
}
}