我有一个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将引发异常。

10-08 18:18