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