list.sort()接收一個Comparable接口,其中compare方法是必須實現的,int compare(T o1, T o2);,它接受兩個參數:o1,o2. o2表示list排序前的前值,o1為后值,compare對他們通過比較進行排序。compare如果返回1則表示o1在后,o2在前(等價於位置不變);返回-1表示o1在前o2在后(等價置換o1與o2的位置);返回0表示位置不變
可以使用lambda表達式進行從小到大排序:
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
Random random = new Random();
for (int i = 0; i < 10; i++) {
list.add(random.nextInt(100));
}
// 從小到大排序
list.sort((o1, o2) -> {
if (o1.equals(o2)) {
return 0;
} else if (o1 > o2) {
//o2為前值,o1為后值;這里理解為:后值比前值大,則不交換位置,等價從小到大排序
//如果這里返回 -1,則為從大到小排序
return 1;
} else {
//后值比前值小,則交換位置
return -1;
}
});
list.forEach(e -> System.out.print(e + " "));
}
如果需要從大到小排序,只需要將代碼中 return 1改成return -1, return -1改成return 0即可.
