gpt4 book ai didi

java - 将 Set 转换为 Map 时出现问题

转载 作者:行者123 更新时间:2023-12-03 19:30:13 26 4
gpt4 key购买 nike

我正在尝试使用收集器使用 Java 8 将 Set 转换为 Map。

Set<B2BUnitModel> payersList = ..... 
final Map<B2BUnitModel, List<B2BUnitPartnershipModel>> b2bUnitPartnershipMap = new HashMap<>();
final Map<B2BUnitModel, Object> map = payersList.stream().collect(Collectors.toMap(Function.identity(), Arrays::asList));
b2bUnitPartnershipMap.putAll(map); // Will throw Type Cast Error

Arrays::asList 以来,我无法理解如何将 Map 值转换为 B2BUnitPartnershipModel 类型只会返回 Object类型。

有什么方法可以让我在 Collectors.toMap(Function.identity(), Arrays::asList) 中写点东西吗?本身,以便 api 将返回所需的 map ( Map<B2BUnitModel, List<B2BUnitPartnershipModel>> 而不是 Map<B2BUnitModel, Object> )。

我想创建一个以 Set value 作为键且为空 B2BUnitPartnershipModel 的 Map列表。

最佳答案

假设 B2BUnitModelKey 并且 B2BUnitPartnershipModelValue 下面的代码生成一个映射,其中包含集合中的键和空列表作为值使用 lambda expressions而不是 method references .

代码

@Test
public void testMapCollector() {

Set<Key> keySet = new HashSet<>();
keySet.add(new Key("key1"));
keySet.add(new Key("key2"));
keySet.add(new Key("key3"));

Map<Key, List<Value>> map = keySet.stream().collect(
Collectors.toMap(k -> k, key -> new ArrayList<>()));

System.out.println(map);

}

class Key {
String key;

public Key(String value) {
this.key = value;
}

@Override
public String toString() {
return "Key [key=" + key + "]";
}
}

class Value {
}

输出

{Key [key=key1]=[], Key [key=key3]=[], Key [key=key2]=[]}

关于java - 将 Set 转换为 Map 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42296862/

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