这可能是一个愚蠢的问题。我需要使用Java 8将List<String>
转换为Map<String, List<String>>
。所有列表值("20", "42", "55")
应该是创建映射的键,而创建映射的value属性应该为空列表。
尽管以下代码完成了该任务,但它会将列表值保存为地图关键字和地图值的第一个索引。
如何使用Java 8功能解决此问题?
List<String> list = Arrays.asList("20", "42", "55");
Map<String, List<String>> serviceMap =
list.stream().collect(Collectors.toMap(Function.identity(), Arrays::asList));
答案 0 :(得分:1)
将Arrays::asList
作为值映射器传递意味着每个键的值将是一个包含该键作为其单个元素的List
,但是您说您希望该值应为空{{ 1}}。
如果该值应为可修改的空List
,则应创建一个新的List
作为ArrayList
的值:
Map
答案 1 :(得分:0)
只需遍历列表中的每个String并将其添加为映射键,然后将一个新的ArrayList作为值,就像这样:
Map<String, List<String> result = Arrays.asList("20", "42", "55").stream()
.collect(Collectors.toMap(Function.identity(), a -> new ArrayList<String>()));