Java中使用lambda表达式自定义排序

  1. 对于一维数组,通常使用Arrays.sort()(默认升序)

    int[] nums = {3, 1, 4, 2};
    Arrays.sort(nums);
    
  2. 对于二维数组,可以lambda表达式实现特定的排序要求。

    • Arrays.sort()的第二个参数中,写lambda表达式
    • lambda表达式形如(a, b) -> {return a - b;},其中a, b表示数组中的元素
    • 升序/降序
      • a-b表示升序
      • b-a表示降序
    • 为了防止Integer的边界情况,可以用Integer.compare(a[0], b[0])替代a-b
    // 假设people[i]的第一个维度表示身高,第二维度表示体重
    int[][] people = {{1, 2}, {3, 4}, {5, 6}};
    
    // 希望首先按找身高降序排列,然后按体重升序排列
    Arrays.sort(people, (a, b) -> {
        if (a[0] != b[0]) 
            return b[0] - a[0];
        else 
            return a[1] - b[1];
    });
    
posted @ 2024-08-17 15:48  Frank23  阅读(314)  评论(0编辑  收藏  举报