如何更新作为对象的HashMap的值?

时间:2017-03-08 05:41:21

标签: java hashmap

如果值是名为Hand

的类
public class Hand implements Iterable<Card>{
    protected List<Card> cards;
    .....
    .....
}

我的HashMap是

HashMap<Integer, Hand> hashMap;

如果我想将Card对象添加到Hand的实例字段,即cards,我是否需要

hashMap.get(i).cards.add(Card Object) 

或者我需要做什么

hashMap.put(i, hashMap.get(i).cards.add(Card Object))

2 个答案:

答案 0 :(得分:2)

假设display: inline-block; 实例已存在,您可能需要检索实例:

Hand

获得实例后,您需要访问其Hand hand = hashMap.get(i); 列表并添加另一张卡片:

cards

或者在您自己的代码中:

Card card = ...;
hand.cards.add(card); //consider using a getMethod to get the cards

您不需要重新映射hashmap中的hand元素,因为您没有替换实际的hashMap.get(i).cards.add(card); 对象,因此在地图中对它的引用保持不变。您所做的只是通过在Hand的卡片中添加项目来修改其中一个属性。

答案 1 :(得分:0)

cards类中使用Hand的getter,如

protected List<Card> getCards() {
    return this.cards;
}

然后更新如下 -

hashMap.get(i).getCards().add(new Card())

尝试

hashMap.put(i, hashMap.get(i).getCards().add(new Card()))

正试图将booleanadd返回到索引i,而不会对您的逻辑有效。