在 Java 8 中使用索引迭代流
在 Java 8 中,流提供了一种处理元素集合的强大方法。然而,在访问索引时迭代流可能具有挑战性。
提供的代码片段演示了使用 zip 和 SimpleEntry 来配对索引和流元素的精心解决方案。不过,有没有更简洁的方法呢?
幸运的是,有。您可以从索引流开始,并通过将索引与相应元素的长度进行比较来基于索引进行过滤。下面是一个示例:
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());
替代方法
或者,您可以使用 AtomicInteger 等可变对象来维护临时计数器。但是,此方法不应在并行流上使用,因为它可能因无序处理而导致错误结果。示例:
AtomicInteger index = new AtomicInteger(); List<String> list = Arrays.stream(names) .filter(n -> n.length() <= index.incrementAndGet()) .collect(Collectors.toList());
以上是如何使用索引高效迭代 Java 8 流?的详细内容。更多信息请关注PHP中文网其他相关文章!