我有一个List<Valuta>
,可以表示(简化)JSON样式:
我想这样转换为Map<String, Valuta>
:
我写了这个一线:
getValute().stream().collect(Collectors.groupingBy(Valuta::getCodice));
但这会返回
Map<String, List<Valuta>>
而不是我需要的。我想
mapping()
函数可以为我工作,但不知道如何。 最佳答案
实际上,您需要在此处使用Collectors.toMap
而不是Collectors.groupingBy
:
Map<String, Valuta> map =
getValute().stream()
.collect(Collectors.toMap(Valuta::getCodice, Function.identity()));
groupingBy
用于基于分组功能对Stream的元素进行分组。默认情况下,与分组功能具有相同结果的2个Stream元素将被收集到List
中。toMap
将元素收集到Map
中,其中键是应用给定键映射器的结果,值是应用值映射器的结果。请注意,默认情况下,如果遇到重复,toMap
将引发异常。