gpt4 book ai didi

Java 8 列表到现有 map

转载 作者:行者123 更新时间:2023-12-04 10:01:43 24 4
gpt4 key购买 nike

我有一张 map Map<Id,Map<Obj1,Obj2>> existingMap and List<Obj1> list ;我需要将列表值添加到映射作为键和新映射作为值。

我尝试做类似的事情:

existingMap.putAll(list.stream().map(x->x.getId()).collect(
Collectors.toMap(x, x -> Map<Obj1,Obj2>::new);

应该怎么写?以及如何使用参数化构造函数来对抗默认值?

最佳答案

尝试:

list.forEach(e -> existingMap.put(e.getId(), new HashMap<>()));

仍然使用 Java 8 的功能特性,效果相同。

for - 等效循环:

for(Id id : list)
existingMap.put(id.getId(), new HashMap<>());

你的代码有问题:

  • Map 是一个接口(interface),不能实例化。例如,使用 HashMapTreeMap 等具体实现。

  • Collectors#toMap 接受两个 Function。如果你想使用你的格式,你需要:

    Collectors.toMap(x -> x, HashMap::new)   

    注意 lambda x -> x 而不是简单的 x

    编辑:当然,您可以使用更冗长的 Function.identity(),而不是 x -> x,但是这取决于您的需要 < em>可能更具表现力。

关于Java 8 列表到现有 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42937373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com