gpt4 book ai didi

java - 如何从java中的Collectors.groupingBy返回不可修改的 map ?

转载 作者:行者123 更新时间:2023-12-04 16:24:48 24 4
gpt4 key购买 nike

所以我有一个以 Long 作为键和一个列表作为值的映射。
我希望每个条目中的 map 和列表都是不可修改的。

Map<Long, List<VariantValueDto>> variantValues = productVariantValues.stream()
.map(p -> new VariantValueDto(
p.getProductVariantId(), p.getOptionId(), p.getOptionName(), p.getOptionValueId(), p.getValueName()
))
.collect(Collectors.groupingBy(VariantValueDto::getProductVariantId));
如何返回这样的结果?

最佳答案

对于不可修改的列表, groupingBy 将收集器作为可选的第二个参数,因此您可以传递 Collectors.toUnmodifiableList() , 而不是隐式默认 toList() .
对于不可修改的映射,有一个函数 collectingAndThen 它接受一个收集器和一个最后要应用的函数,并返回一个新的收集器。所以你可以包装 groupingBy在那并调用 unmodifiableMap在上面。

Map<Long, List<VariantValueDto>> variantValues = productVariantValues.stream()
.map(p -> new VariantValueDto(...))
.collect(
Collectors.collectingAndThen(
Collectors.groupingBy(
VariantValueDto::getProductVariantId,
Collectors.toUnmodifiableList()
),
Collections::unmodifiableMap
)
);

关于java - 如何从java中的Collectors.groupingBy返回不可修改的 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66833486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com