我正在嘗試對名為的 ArrayList 執行以下流操作parts:parts .stream() .map(t -> t.toLowerCase()) .distinct() .sorted() .collect(Collectors.toList());其中parts包含這樣的字符串:AdventuresinDisneylandTwoblondesweregoingtoDisneyland....除了查看調試器外,parts根本沒有改變。不確定我是否遺漏了該過程的某些步驟?
4 回答

慕容708150
TA貢獻1831條經驗 獲得超4個贊
在查看調試器時,“部件”根本沒有改變
正確的。流不會修改用于創建流的集合的元素。該流最終返回一個包含映射項的新項。 List
只需創建一個變量并將流操作的返回值分配給它:
List<String> modifiedList = parts.stream() .map(t -> t.toLowerCase()) .distinct() .sorted() .collect(Collectors.toList());

HUX布斯
TA貢獻1876條經驗 獲得超6個贊
您沒有將收集的列表存儲在任何地方。流不會就地更改集合。
你應該做:
parts = parts.stream().....;
根據評論編輯:
要獲得一個ArrayList
而不是 any List
,請將您的收集器更改為:
.collect(Collectors.toCollection(ArrayList::new));

喵喵時光機
TA貢獻1846條經驗 獲得超7個贊
流不會改變流的來源,因此您正在觀察預期的行為。
您應該捕獲流處理的結果并在調試器中檢查它,例如。
List<String> result = parts.stream()...
添加回答
舉報
0/150
提交
取消