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中文网其他相关文章!