转换列表<;字符串>;映射<;字符串,列表<;字符串>&燃气轮机;使用列表值作为映射键,使用空列表映射值java 8

转换列表<;字符串>;映射<;字符串,列表<;字符串>&燃气轮机;使用列表值作为映射键,使用空列表映射值java 8,java,collections,java-8,Java,Collections,Java 8,这可能是个愚蠢的问题。我需要用Java8将列表转换为映射。所有列表值(“20”、“42”、“55”)都应该是创建映射的键,而创建映射的值属性应该是空列表 尽管以下代码执行此任务,但它将列表值保存为映射键和映射值的第一个索引 如何使用Java 8功能解决此问题??? List<String> list = Arrays.asList("20", "42", "55"); Map<String, List<String>> serviceMap =

这可能是个愚蠢的问题。我需要用Java8将
列表
转换为
映射
。所有列表值
(“20”、“42”、“55”)
都应该是创建映射的键,而创建映射的值属性应该是空列表

尽管以下代码执行此任务,但它将列表值保存为映射键和映射值的第一个索引

如何使用Java 8功能解决此问题???

List<String> list = Arrays.asList("20", "42", "55");

Map<String, List<String>> serviceMap =
            list.stream().collect(Collectors.toMap(Function.identity(), Arrays::asList));
List List=Arrays.asList(“20”、“42”、“55”);
地图服务地图=
list.stream().collect(Collectors.toMap(Function.identity(),Arrays::asList));

只需迭代列表中的每个字符串并将其添加为映射键,将新的ArrayList作为值,如下所示:

Map new ArrayList());

数组::asList
作为值映射器传递意味着每个键的值都将是一个
列表
,其中包含该键作为其单个元素,但您说过希望值应该是空的
列表

如果值应为可修改的空
列表
,则应创建一个新的
数组列表
,作为
映射的值

List<String> list = Arrays.asList("20", "42", "55");

Map<String, List<String>> serviceMap =
            list.stream()
                .collect(Collectors.toMap(Function.identity(), a -> new ArrayList<>()));
List List=Arrays.asList(“20”、“42”、“55”);
地图服务地图=
list.stream()
.collect(Collectors.toMap(Function.identity(),a->newarraylist());

@SameeraManorathna这是Java8@Eran我认为OP不知道他的意思/需要;)如果列表包含重复项,这将导致异常。@Oleksandr这是真的,因为没有人说过,它必须是可变列表,
Collectors.toMap(Function.identity(),s->Collections.emptyList())
也可以……只是为了记录:您知道地图消除了列表中可能存在的重复条目吗?@SameeraManorathna这是什么意思?流是用Java8添加的?!我刚刚在一分钟前更新了我的答案;在它使用for循环之前。抱歉搞混了!