如何找到所有dp [1]值的最大数量?在下面的例子中,答案是21,因为我只看集合的第二个数字。目前正在使用for循环,但正在寻找有效的方法。
int[][] dp = new int[30][2];
[2019 - 05 - 15]【2019 - 05 - 16 00:01:00】
此问题略有不同Java- Finding maximum number in a 2D array
如何找到所有dp [1]值的最大数量?在下面的例子中,答案是21,因为我只看集合的第二个数字。目前正在使用for循环,但正在寻找有效的方法。
int[][] dp = new int[30][2];
[2019 - 05 - 15]【2019 - 05 - 16 00:01:00】
此问题略有不同Java- Finding maximum number in a 2D array
1条答案
按热度按时间ut6juiuv1#
这可以通过使用streams以简单的方式解决:
这将遍历外部数组,将每个内部数组Map到该数组的第二个元素,然后返回这些Map值的最大元素。
明细
Arrays.stream(dp)
-返回数组元素的Stream<int[]>
。mapToInt(a -> a[1])
-将ToIntFunction<int[]>
应用于Stream<int[]>
的每个元素,返回这些结果的IntStream
。这使用了函数a -> a[1]
,它接受一个数组并返回索引为1的元素。max()
-返回IntStream
中的最大值int
作为OptionalInt
。这个OptionalInt
将包含最大值(除非流为空,在这种情况下,它将是一个空的OptionalInt
)。orElseThrow
-返回OptionalInt
中的int
值,如果OptionalInt
为空,则抛出NoSuchElementException
。