展开全部
看代码:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
public class Demo {
public static void main(String[] args) throws Exception {
Pair[] pairs = {
new Pair(0, 1),
new Pair(2, 9),
new Pair(7, 0),
new Pair(8, 8),
new Pair(8, 6),
new Pair(9, 2),
new Pair(1, 5),
new Pair(8, 2),
new Pair(9, 15),
new Pair(9, 5)
};
ArrayList<Pair> pairList = new ArrayList<>(Arrays.asList(pairs));
System.out.println("排序前:");
System.out.println(Arrays.toString(pairs));
Arrays.sort(pairs); // 对数组排序
System.out.println("排序后:");
System.out.println(Arrays.toString(pairs));
System.out.println("排序前:");
System.out.println(pairList);
Collections.sort(pairList); // 对 ArrayList 排序
System.out.println("排序后:");
System.out.println(pairList);
}
}
// 继承 Comparable 接口排序该类是 “可排序的”
// <> 里面的是排序时与当前实例进行比较的实例的类型
// 一般都和当前实例是同一个类型,比如这里就是 Pair 的实例 和 Pair 的实例比较
class Pair implements Comparable<Pair> {
public int left;
public int right;
public Pair(int left, int right) {
this.left = left;
this.right = right;
}
@Override
public String toString() {
return "[" + left + ", " + right + "]";
}
// 排序规则,先按 left 排序,再按 right 排序
@Override
public int compareTo(Pair that) {
if (this.left > that.left) {
return 1;
} else if (this.left < that.left) {
return -1;
} else if (this.right > that.right) {
return 1;
} else if (this.right < that.right) {
return -1;
}
return 0;
}
}
可以发现先按 left 排序,如果 left 相等,则按 right 排序
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询