当前位置: 首页 > 知识库问答 >
问题:

Java8:从列表中查找最小值索引

柴阳云
2023-03-14

假设我有一个包含元素(34、11、98、56、43)的列表。

使用Java8 streams,如何找到列表最小元素的索引(例如,在本例中为1)?

共有1个答案

阎修明
2023-03-14
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
 类似资料:
  • 问题内容: 说我有一个包含元素的列表。 使用Java 8流,如何找到列表中最小元素的索引(例如,本例中为1)? 我知道可以使用Java在Java中轻松完成此操作。但是,我正在研究类似Scala的解决方案,我们可以简单地说一下获得最小值的索引。 使用流或lambda表达式(例如Java 8的特定功能)可以完成相同的结果吗? 注意:这仅用于学习目的。使用实用程序方法没有任何问题。 问题答案: impo

  • 我试图找到矩阵中每列的最小值和最大值,但我当前的代码运行不正确。我试图把最小值放在一个新矩阵的第一行,最大值放在下一行,并对每一列这样做。任何帮助都将不胜感激,谢谢!

  • 我编写了以下方法来查找映射到最高值的键,并尝试转换为java。你能帮忙吗?

  • 我有这样的课: 和类似的列表,其中填充了元素。 如何使用Java8获得的最小值和最大值?

  • 问题内容: 我编写了以下方法来查找映射到最高值的键,然后尝试转换为java 。你能帮忙吗? 问题答案: 您可以通过以下方式获得一个钥匙 但不幸的是,没有内置函数可以获取所有等效的最大值。 最简单,直接的解决方案是先找到最大值,然后再检索映射到该值的所有键: “ 如何强制max()返回JavaStream中的所有最大值? ”中讨论了单次获取流的所有最大值的解决方案。”。您将看到,如果您的输入是普通的