要有效地迭代流並存取索引,可以使用多種方法。
最乾淨的解決方案是建立索引流和過濾器它基於流的元素:
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());
此方法可確保結果清單僅包含滿足基於索引的條件的元素。
另一種選擇是在流中維護一個可變計數器:
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());
此方法提供了熟悉的語法類似於 for 循環。然而,值得注意的是,這種方法在並行流上使用時可能會中斷,因為專案可能不會按順序處理。
最終,方法的選擇取決於特定要求以及應用程式的效能考慮因素。
以上是如何在存取元素索引時迭代 Java 8 流?的詳細內容。更多資訊請關注PHP中文網其他相關文章!