カスタムソートを行い、Idと名前のマップを含むマップに変換する必要があるリストがあります。
これが私のコードです:
Map<Long, String> map = new LinkedHashMap<>();
list.stream().sorted(Comparator.comparing(Building::getName)).forEach(b-> map.put(b.getId(), b.getName()));
これでうまくいくと思いますが、ここでLinkedHashMap
を作成せずに、ファンシー関数型プログラミングを使用して1行でジョブを実行できるかどうか疑問に思います。
あなたが持っている Collectors.toMap
その目的のために :
Map<Long, String> map =
list.stream()
.sorted(Comparator.comparing(Building::getName))
.collect(Collectors.toMap(Building::getId,Building::getName));
インスタンス化されるMap実装を強制したい場合は、これを使用します。
Map<Long, String> map =
list.stream()
.sorted(Comparator.comparing(Building::getName))
.collect(Collectors.toMap(Building::getId,
Building::getName,
(v1,v2)->v1,
LinkedHashMap::new));
toMap()
/Java.util.stream.Collectors
を使用