如何从java中的Collectors.groupingBy返回不可修改的映射?
所以我有一个地图,它以长作为键,以列表作为值。 我希望每个条目中的映射和列表都不可修改如何从java中的Collectors.groupingBy返回不可修改的映射?,java,java-stream,Java,Java Stream,所以我有一个地图,它以长作为键,以列表作为值。 我希望每个条目中的映射和列表都不可修改 Map variantValues=productVariantValues.stream() .map(p->新变量值到( p、 getProductVariantId(),p.getOptionId(),p.getOptionName(),p.getOptionValueId(),p.getValueName() )) .collect(收集器.groupingBy(VariantValueDto::ge
Map variantValues=productVariantValues.stream()
.map(p->新变量值到(
p、 getProductVariantId(),p.getOptionId(),p.getOptionName(),p.getOptionValueId(),p.getValueName()
))
.collect(收集器.groupingBy(VariantValueDto::getProductVariantId));
如何返回这样的结果?对于不可修改的列表,将收集器作为可选的第二个参数,因此您可以传递,而不是隐式默认值
toList()
对于不可修改的映射,有一个函数,它接受一个收集器和一个要在最后应用的函数,并返回一个新的收集器。因此,您可以将groupingBy
包装在其中,并在其上调用unmodifiableMap
Map<Long, List<VariantValueDto>> variantValues = productVariantValues.stream()
.map(p -> new VariantValueDto(...))
.collect(
Collectors.collectingAndThen(
Collectors.groupingBy(
VariantValueDto::getProductVariantId,
Collectors.toUnmodifiableList()
),
Collections::unmodifiableMap
)
);
Map variantValues=productVariantValues.stream()
.map(p->newvariantValuedTo(…))
.收集(
收藏,收藏,然后(
收集者分组(
VariantValueDto::getProductVariantId,
Collectors.toUnmodifiableList()
),
集合::不可修改映射
)
);
对于不可修改列表,将收集器作为可选的第二个参数,因此您可以传递,而不是隐式默认值toList()
对于不可修改的映射,有一个函数,它接受一个收集器和一个要在最后应用的函数,并返回一个新的收集器。因此,您可以将groupingBy
包装在其中,并在其上调用unmodifiableMap
Map<Long, List<VariantValueDto>> variantValues = productVariantValues.stream()
.map(p -> new VariantValueDto(...))
.collect(
Collectors.collectingAndThen(
Collectors.groupingBy(
VariantValueDto::getProductVariantId,
Collectors.toUnmodifiableList()
),
Collections::unmodifiableMap
)
);
Map variantValues=productVariantValues.stream()
.map(p->newvariantValuedTo(…))
.收集(
收藏,收藏,然后(
收集者分组(
VariantValueDto::getProductVariantId,
Collectors.toUnmodifiableList()
),
集合::不可修改映射
)
);
使用集合。不可修改的映射(VariantValue);在不复制整个thingUse集合的情况下创建新的不可修改映射。不可修改映射(VariantValue);创建一个新的不可修改的地图,而不复制整个内容。这正是我要找的,谢谢。这正是我要找的,谢谢。