【问题标题】:How to use Comparator in java with lambda expression? [duplicate]java - 如何在带有lambda表达式的Java中使用Comparator? [复制]
【发布时间】:2021-10-11 03:39:09
【问题描述】:

我正在使用 lambda 表达式基于多列对二维数组进行排序,但编译时失败。

public static void 2DarraySort(int[][] box) {
    Arrays.sort(box, Comparator.comparingInt(row -> row[0]).thenComparingInt(row -> row[1]));
}

谁能告诉我我做错了什么?

错误信息:

array required, but java.lang.Object found

【问题讨论】:

标签: java comparator


【解决方案1】:

如果您没有链接比较器,这会很好:

Arrays.sort(box, Comparator.comparingInt(row -> row[0]));

但是,当比较器被链接时,需要明确指定被比较对象的类型,可以通过两种方式完成:

  1. 输入comparingInt/comparing
Arrays.sort(box, Comparator
    .<int[]>comparingInt(row -> row[0])
    .thenComparingInt(row -> row[1])
);
  1. 在 lambda 中指定 row 类型:
Arrays.sort(box, Comparator
    .comparingInt((int[] row ) -> row[0])
    .thenComparingInt(row -> row[1])
);

【讨论】:

    猜你喜欢
    • 2017-06-29
    • 2014-03-25
    • 2019-03-18
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 2014-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多