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中文網其他相關文章!