我有一个 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);
关于java - 如何找到其中包含空元素的整数数组的最大元素的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66554999/