首頁 >Java >java教程 >如何使用索引高效迭代 Java 8 流?

如何使用索引高效迭代 Java 8 流?

Susan Sarandon
Susan Sarandon原創
2024-12-17 07:26:24401瀏覽

How to Efficiently Iterate Java 8 Streams with Indices?

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn