{"title":"Java 8 Stream 获取过滤数据索引:使用 IntStream.range() 方法","description":"本教程演示如何使用Java 8 Stream获取过滤数据索引。使用 IntStream.range() 生成索引流,然后过滤符合条件的索引,最后映射回原始数据。","keywords":"Java 8, Stream, filter, 索引, IntStream.range(), mapToObj(), 过滤, 索引流, Java 16, Collectors.toList()","content":"在Java 8 Stream中,没有直接获取符合条件的数据所在的索引的方法。但是,你可以使用IntStream.range()方法来创建一个索引流,然后使用filter()方法过滤出符合条件的索引,最后通过mapToObj()方法将索引映射回原始数据。下面是一个例子:\n\njava\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.stream.IntStream;\n\npublic class Main {\n public static void main(String[] args) {\n List<Integer> numbers = new ArrayList<>();\n numbers.add(1);\n numbers.add(2);\n numbers.add(3);\n numbers.add(4);\n numbers.add(5);\n\n List<Integer> filteredIndexes = IntStream.range(0, numbers.size())\n .filter(i -> numbers.get(i) > 2)\n .mapToObj(i -> i)\n .toList();\n\n System.out.println(filteredIndexes); // 输出 [2, 3, 4]\n }\n}\n\n\n在上述代码中,我们首先使用IntStream.range()方法创建了一个从0到numbers.size()的索引流。然后,我们使用filter()方法过滤出满足条件的索引,即对应的元素大于2. 最后,我们使用mapToObj()方法将索引映射回原始数据,并将结果收集到列表中。\n\n请注意,toList()方法是Java 16中的新特性,如果你使用的是Java 8,可以使用Collectors.toList()来代替。"}

Java 8 Stream 获取过滤数据索引:使用 IntStream.range() 方法

原文地址: https://www.cveoy.top/t/topic/pWGt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录