我必须写方法:填补HashMap中与作为参数传递的组的元素
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;
}
我也有其他类:
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:<{}>
,我不明白为什么。有人能帮助我吗?
首先感谢您的回答。你对如何解决这种情况有任何想法吗?我问这是因为我已经知道那条线总是返回null,但是我一直试图用这种方法试图解决这个问题太久了 – Flavio
不客气。我不确定要了解您的需求。我认为在PickedUpForEachRobot()中,这个想法是在Set of Stuff上迭代并获取picker的数量。然后用这个数量更新地图。但问题是我没有看到模型中的数量。 – davidxxx
你认为有可能问题是我必须填写通过Stuff元素参数传递的集合吗?因为当我做stuff.getPicker()它总是让我空。 – Flavio