Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从java中的Collectors.groupingBy返回不可修改的映射?_Java_Java Stream - Fatal编程技术网

如何从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);创建一个新的不可修改的地图,而不复制整个内容。这正是我要找的,谢谢。这正是我要找的,谢谢。