首页 > Java > java教程 > 如何有效地迭代 Java 8 流并访问索引?

如何有效地迭代 Java 8 流并访问索引?

DDD
发布: 2024-12-28 19:27:14
原创
724 人浏览过

How Can I Efficiently Iterate Through a Java 8 Stream with Access to Indices?

Java 8 中带索引的简明流迭代

在 Java 8 中迭代流,同时还可以访问其索引,可以使用以下方式实现有多种方法,最简单的是从索引流开始。

例如,代码下面生成从 0 到“names”数组长度的整数流,过滤掉相应字符串长度大于索引的索引,并将结果字符串收集到列表中:

String[] names = {"Sam", "Pamela", "Dave", "Pascal", "Erik"};
List<String> nameList = IntStream.range(0, names.length)
         .filter(i -> names[i].length() <= i)
         .mapToObj(i -> names[i])
         .collect(Collectors.toList());
登录后复制

这会导致列表仅包含“Erik”,因为其长度 (4) 小于或等于其索引 (4)。

另一种方法虽然不太简洁,但仍保留广告过滤方法内的临时计数器。但是,需要注意的是,在并行流上使用此方法可能会导致项目处理无序

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());
登录后复制

以上是如何有效地迭代 Java 8 流并访问索引?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板