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

标签 java sorting arraylist indexing

我有一个 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/

相关文章:

php - Octobercms - 按变量排序记录,如果值相同,则按第二个变量排序

java - 如何访问数组列表中对象的一部分?

java - 为什么 ArrayList 同时具有 get 和 elementData 方法?

java - 比较两个字符串数组而不通过每个元素进行索引的最佳方法是什么?

java - 为什么方法 PrintWriter.print(string) 不将文本流式传输到输出文件中并等待关闭后再写下文本?

java - 在注册表中找到我的应用程序安装的路径

java - jpa hibernate @OneToOne @JoinColumn referencedColumnName 忽略

php - 数组按日期排序

JavaScript 按可为空的 bool 值对数组进行排序,然后按字符串排序

java - 黑莓中的文件处理