gpt4 book ai didi

Java 8 : Find index of minimum value from a List

转载 作者:搜寻专家 更新时间:2023-10-30 19:53:00 25 4
gpt4 key购买 nike

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

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

我知道这可以在 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 在 his answer 中提到的那样,您可以通过使用 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 : Find index of minimum value from a List,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31116190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com