groupingBy や toMap で作成したリスト

今更のことであるが。。。
List.of で作る List は、AbstractImmutableList だけど、
Java Stream の groupingBy toMap で作成したキーに対するリストは、AbstractImmutableList ではない。
だから、

List<Item> list

このすでに存在するAbstractImmutableList でないリストから、以下のような Map を作って

Map<String, List<Item>> map = list.stream().collect(Collectors.groupingBy(t->t.getName()));

Mapの各Key に対するリストの入れ替え操作をしても問題なく期待どおりの動作になる。

map.entrySet().stream().forEach(e->{ 
    List<Item> rlist = e.getValue();
    // rlist.set() 等のList入れ替え操作を行う    
});

この map が持つリストは変更される。
注意すべきは、元の list も変更される。

(参考)https://oboe2uran.hatenablog.com/entry/2020/04/09/234556