说我有一个包含元素的列表(34, 11, 98, 56, 43)
。
使用Java 8流,如何找到列表中最小元素的索引(例如,本例中为1)?
我知道可以使用Java在Java中轻松完成此操作list.indexOf(Collections.min(list))
。但是,我正在研究类似Scala的解决方案,我们可以简单地说List(34, 11, 98, 56, 43).zipWithIndex.min._2
一下获得最小值的索引。
使用流或lambda表达式(例如Java 8的特定功能)可以完成相同的结果吗?
注意:这仅用于学习目的。使用Collections
实用程序方法没有任何问题。
import static java.util.Comparator.comparingInt;
int minIndex = IntStream.range(0,list.size()).boxed()
.min(comparingInt(list::get))
.get(); // or throw if empty list
正如@TagirValeev在他的回答中提到的那样,您可以通过使用IntStream#reduce
而不是来避免装箱Stream#min
,但是这样做的目的是使意图模糊:
int minIdx = IntStream.range(0,list.size())
.reduce((i,j) -> list.get(i) > list.get(j) ? j : i)
.getAsInt(); // or throw
假设我有一个包含元素的列表。 使用Java8 streams,如何找到列表最小元素的索引(例如,在本例中为1)?
我试图找到矩阵中每列的最小值和最大值,但我当前的代码运行不正确。我试图把最小值放在一个新矩阵的第一行,最大值放在下一行,并对每一列这样做。任何帮助都将不胜感激,谢谢!
我试图找到每一行CSV文件的MIN和MAX值,并将它们附加到列表中的下一个位置,位置5和6。我已经设法计算了平均值,将其附加到第四个位置,并将其从最高到最低输出。然而,我正在努力解决如何找到每行的MAX和MIN值,以便我可以做同样的操作——从最高到最低。原始CSV的格式是:弗雷德,56,78,99,每个用户在新行上。 任何帮助都将不胜感激。
我编写了以下方法来查找映射到最高值的键,并尝试转换为java。你能帮忙吗?
我有这样的课: 和类似的列表,其中填充了元素。 如何使用Java8获得的最小值和最大值?