java如何对Arraylist数组进行排序(用comparable)

如题,不用comparable排序也行... 如题,不用comparable排序也行 展开
 我来答
冷叶忆雪
2015-11-23 · TA获得超过1018个赞
知道小有建树答主
回答量:315
采纳率:0%
帮助的人:163万
展开全部

看代码:

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 排序

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式