gpt4 book ai didi

java - 使用作为参数传递的集合的元素填充 HashMap

转载 作者:行者123 更新时间:2023-12-02 13:03:31 24 4
gpt4 key购买 nike

我必须编写方法:

    public Map<Robot, Integer> PickedUpForEachRobot(Set<Stuff> pickedUp) 

它必须迭代作为参数传递的集合,并且必须计算每个机器人拾取的东西的数量并将其关联到他的实例。

我所做的是:

public Map<Robot, Integer> PickedUpForEachRobot(Set<Stuff> pickedUp) {
final Map<Robot,Integer> map = new HashMap<>();
for(Stuff stuff : pickedUp){
Integer quantity = map.get(stuff.getPicker());
if(quantity!=null){
map.put(stuff.getPicker(), quantity);
}
}
return map;

}

我还有其他类(class):

public class Stuff {

private Robot picker;

public Robot getPicker() {
return this.picker;
}

}

和:

public class Robot {

private Set<Stuff> bunchOfStuff;

public Set<Stuff> getBunchOfStuff() {
return this.bunchOfStuff;
}

}

我已经尝试合成,所以我希望我能说清楚。

所以我的问题是,当我对此方法进行测试时:

@Test
public void testRaccoltoPerMezzo() {
Statistics stats = new Statistics();
Stuff stuff1 = new ball();
Stuff stuff2 = new legoPiece();
Set<Stuff> set = new HashSet<>();
set.add(stuff1);
assertEquals(1,set.size());
Map<Robot,Integer> map = new HashMap<>();
map.put(stuff1.getPicker(),1);

assertEquals(map, stats.PickedUpForEachRobot(set));

}

它失败了,它对我说:

java.lang.AssertionError: expected:<{null=1}> but was:<{}>

我不明白为什么。有人可以帮助我吗?

最佳答案

此消息:

java.lang.AssertionError: expected:<{null=1}> but was:<{}>

意味着您希望有一张 map ,其中一个元素拥有 null键和关联值 1但你有一张空 map 。

根据您的要求和实际 map ,您创建的预期 map 似乎也不够。关于实现中 map 的填充,我至少注意到这一点根本不合逻辑。

这里:

final Map<Robot,Integer> map = new HashMap<>();
for(Stuff stuff : pickedUp){
Integer quantity = map.get(stuff.getPicker());
if(quantity!=null){
map.put(stuff.getPicker(), quantity);
}
}

Integer quantity = map.get(stuff.getPicker());将始终将数量值设置为 null当你从空 map 中得到它时:map = new HashMap<>();并且仅当数量不是 null 时才填充 map :

if(quantity!=null){
map.put(stuff.getPicker(), quantity);
}

但这永远不会发生,因为 map 是空的:所以你永远不会填充 map 。

您的代码中可能还有其他问题,但我希望它能帮助您重新设计逻辑。

关于java - 使用作为参数传递的集合的元素填充 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44228300/

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