创建使用给定列表中的键初始化的地图[重复]

Posted

技术标签:

【中文标题】创建使用给定列表中的键初始化的地图[重复]【英文标题】:Create Map initialized using keys in given List [duplicate] 【发布时间】:2021-02-02 01:13:39 【问题描述】:

我有一个List<String> entries 列表,我想创建一个HashMap<String, Deque<Instant>> map,其中的键来自entries 列表。

我可以的

for(String s: entries)map.put(s, new Deque<>() 但是我正在寻找更优雅的解决方案。

map = Stream.of(entries).collect(Collectors.toMap(x -> (String) x, new Deque<>()));

但是我得到了转换错误。这可以修复吗,我可以根据键列表构建地图吗?

【问题讨论】:

@Aman 你的解决方案将无法编译 entries.stream().collect(Collectors.toMap(Function.identity(), x -&gt; new ArrayDeque()))Collectors.toMap(Function.identity(), x -&gt; new LinkedList()) 应该没问题。 @YCF_L 是的,忘了x-&gt; 【参考方案1】:

我认为你需要这个:

Map<String, Deque<Instant>> map = entries.stream()
        .collect(Collectors.toMap(x -> x, x -> new ArrayDeque<>()));

您甚至可以将x -&gt; x 替换为Function.identity()

.collect(Collectors.toMap(Function.identity(), x -> new ArrayDeque<>()));

【讨论】:

Function.identity() 是一个很好的数学参考,只是不确定程序员是否认为这是一个清晰的代码。谢谢。

以上是关于创建使用给定列表中的键初始化的地图[重复]的主要内容,如果未能解决你的问题,请参考以下文章

python - 如何使用列表中的键和Python中的空值初始化dict?

在javascript中找到地图中的键[重复]

list初始化

C++ - 在地图中搜索所有具有相同值的键的最快方法是啥?

在 Python 中初始化大量布尔值 [重复]

使用 Enumerable.Repeat 进行容量列表初始化的问题 [重复]