要有效地迭代流并访问索引,可以使用多种方法。
最干净的解决方案是创建索引流和过滤器它基于流的元素:
String[] names = {"Sam", "Pamela", "Dave", "Pascal", "Erik"}; IntStream.range(0, names.length) .filter(i -> names[i].length() <= i) .mapToObj(i -> names[i]) .collect(Collectors.toList());
此方法可确保结果列表仅包含满足基于索引的条件的元素。
另一种选择是在流中维护一个可变计数器:
String[] names = {"Sam", "Pamela", "Dave", "Pascal", "Erik"}; AtomicInteger index = new AtomicInteger(); List<String> list = Arrays.stream(names) .filter(n -> n.length() <= index.incrementAndGet()) .collect(Collectors.toList());
此方法提供了熟悉的语法类似于 for 循环。然而,值得注意的是,这种方法在并行流上使用时可能会中断,因为项目可能不会按顺序处理。
最终,方法的选择取决于具体要求以及应用程序的性能考虑因素。
以上是如何在访问元素索引时迭代 Java 8 流?的详细内容。更多信息请关注PHP中文网其他相关文章!