如何在Java中获取二维数组列表的最大值/最小值

迈尔达德·卡玛利(Mehrdad Kamali)

在这里有人问我关于C#的相同问题,并且我发现使用linq可以轻松地做到这一点。

但是,由于在Java中没有linq的替代方法,我该怎么做呢?

鲁斯兰·斯特尔马琴科

如果您想要类似于LINQ的东西,可以使用Java8流来做到这一点:

// prepare arrays
List<int[][]> kidsL = new ArrayList<>();
int[][] square1 = new int[8][8];
int[][] square2 = new int[8][8];
int[][] square3 = new int[8][8];
for (int i = 0; i < 8; i++)
    for (int j = 0; j < 8; j++) {
        square1[i][j] = 1;
        square2[i][j] = 2;
        square3[i][j] = 3;
    }
kidsL.add(square1);
kidsL.add(square2);
kidsL.add(square3);

// find min
kidsL.stream()
        .mapToInt(a -> Arrays.stream(a).flatMapToInt(Arrays::stream).sum())
        .min()
        .ifPresent(System.err::println);

// find max
kidsL.stream()
        .mapToInt(a -> Arrays.stream(a).flatMapToInt(Arrays::stream).sum())
        .max()
        .ifPresent(System.err::println);

它打印:

64
192

但这不如简单的循环有效,因为您计算了两次。

当然,您可以添加中间运算来存储总和列表,然后根据该总和来计算最小/最大。

// intermediate list of sums
List<Integer> sums = kidsL.stream()
        .mapToInt(a -> Arrays.stream(a).flatMapToInt(Arrays::stream).sum())
        .boxed().collect(Collectors.toList());

sums.stream().mapToInt(i -> i)
        .min()
        .ifPresent(System.err::println);

sums.stream().mapToInt(i -> i)
        .max()
        .ifPresent(System.err::println);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在JavaScript中从二维数组获取最小值和最大值

如何在 Python 中找到二维数组的最小值和最大值

如何找到二维数组的最大值和最小值的位置

在二维数组中查找最小值/最大值

最小值最大值二维数组javascript

如何在二维数组列表中找到最大值/秒?

如何使用Java 8从对象列表中获取最小值和最大值

如何使用多线程在Java中查找二维数组的最大值

使用D3.js在最小值和最大值之间生成二维数组

Python中索引二维列表的最小值

获取二维数组中每列的第二个最小值

如何通过在python的二维数组中使用if技术找到最大值、最小值和平均值

C ++如何在n个元素的一维数组中查找最小值和最大值?

二维数组中的最大值(处理中)

在列表中获取最小值和最大值

在二维数组中查找最大值

从列表项中找到最大值后如何获取二维列表的索引

过滤数组以获取二维数组 GoogleScripts 中列的最大值的行

数组中的Java最小值和最大值

Java在字符串的二维数组中查找最小值

如何沿轴使用 argmax 来获取 numpy 二维数组的每一列中的最大值?

如何获取数组中数组的最小值和最大值?

如何在二维列表的一行中找到最大值及其索引?

如何在Pandas DataFrame中获取nan / min值时的最大值/最小值

如何在整个二维数组中找到最大值(处理)

如何在二维数组(矩阵)中找到局部最大值的索引?

如何在二维数组(矩阵)中查找每一行的最大值C#

在java中获取随机生成的数组中的最小值和最大值

如何获取列中列表的最大值和最小值?