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
即可.