1
所以這更多的是性能或最佳實踐問題。 我得到了一個列表,用於保存自定義數據結構的條目。這看起來像:從流內操作數據而不是打開兩個流
public class Entry {
private int id;
private String title;
private String description;
....
}
所以,當我想刪除從我的列表中的條目,並將其追加到另一個列表我這樣做:
Entry id = entries.stream().filter(e -> Integer.toString(e.getId()).equals(args[1]))
.map(e -> e).findAny().get();
entries.stream().filter(e -> Integer.toString(e.getId()).equals(args[1]))
.forEach(entry -> {
doneEntries.add(new Entry(entry.getTitle(),
entry.getDescription(),
"done",
entry.getTags(),
doneId));
doneId+=1;
});
entries.remove(id);
我知道流不操縱數據,他們創造新數據,所以我不能刪除第二個流中的條目。這會導致ConcurrentModificationException。在我看來,我的結果只是一個解決方法,並不是非常高效。
如何提高這段代碼?
感謝的提前
流並不總是最好的選擇。我想知道你爲什麼在這裏使用它們,而不是把你的輸入保存在一個'Map'中。 – Kayaman
[David](http://stackoverflow.com/users/4796021/david-pérez-cabrera)給出的答案很好。但是地圖是最好的選擇。感謝@Kayaman – chrootzius