> 列表值作为映射键,映射值带有空列表 java 8,java,collections,java-8"/>

首页 > 解决方案 > 转换列表到地图> 列表值作为映射键,映射值带有空列表 java 8

问题描述

这可能是一个愚蠢的问题。我需要使用 Java 8将 a 转换List<String>为 a 。所有列表值都应该是创建映射的键,而创建映射的 value 属性应该是一个空列表。Map<String, List<String>>("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));

标签: javacollectionsjava-8

解决方案


作为值映射器传递Arrays::asList意味着每个键的值将是List包含该键作为其单个元素的 a,但您说您希望该值应该是空的List

如果该值应该是可修改的空值List,则应创建一个新ArrayList值作为 的值Map

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

Map<String, List<String>> serviceMap =
            list.stream()
                .collect(Collectors.toMap(Function.identity(), a -> new ArrayList<>()));

推荐阅读