java - 如何找到其中包含空元素的整数数组的最大元素的索引?

我有一个 ArrayList 说:

List<Integer> intlist= Arrays.asList(11,34,500,null,81, null);

我想获取最大值的索引。但是我里面有空元素。怎么办?

最佳答案

您可以使用 Stream 过滤掉空值,并找到最大值。如果找到最大值,您可以使用 indexOf 方法在您的列表中查找该项目的索引。

代码

List<Integer> intlist = Arrays.asList(11, 34, 500, null, 81, null);

int maxindex = intlist.stream()
            .filter(Objects::nonNull)
            .max(Integer::compare)
            .map(intlist::indexOf)
            .orElse(-1);

System.out.println(maxindex);

结果:

2

没有找到最大值的替代方案+使用索引

也可以避免使用indexOf,直接使用reduce方法获取最大索引,比较所有元素,保留最大的。这里我们创建一个流来生成所有可能的索引,并使用它们来检查值是否不为空。检查后,我们减少流以仅保留最大值的索引

int maxindex = IntStream.range(0, intlist.size())
            .filter(i -> intlist.get(i) != null)
            .reduce((i, j) -> intlist.get(i) > intlist.get(j) ? i : j)
            .orElse(-1);

System.out.println(maxindex);

https://stackoverflow.com/questions/66554999/

相关文章:

html - 如何在 svg 圆圈中居中 svg 路径?

kotlin - 选择随机数但排除特定值

java - FutureTask get vs run,任务永远不会完成

amazon-web-services - AWS Elastic Beanstalk EFS 安装

vue.js - Primevue Grid 和 Flex 布局无法正确呈现

go - 无法将 terraform variables.tf 文件读入可能进入程序

r - 按组保留所有变量的最后一个非缺失观察

c++ - 有没有办法进行编译时检查,一个类的所有成员都在 operator== 中进行比较

swift - Swift 5 中的 THE.self 是什么?

python - 从 Python 数据框中的整数中检索工作日名称