繁体   English   中英

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

[英]How update a value of a HashMap that is an object?

如果值是一个名为 Hand 的类

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

我的 HashMap 是

HashMap<Integer, Hand> hashMap;

如果我想在Hand ie cards的实例字段中添加一个 Card 对象,我需要做

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

还是我需要做

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

假设Hand实例已经存在,您可能想要检索该实例:

Hand hand = hashMap.get(i);

拥有实例后,您希望访问其cards列表并向其中添加另一张卡片:

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

或者在您自己的代码中:

hashMap.get(i).cards.add(card);

您不需要重新映射哈希图中的 hand 元素,因为您没有替换实际的Hand对象,因此映射中对它的引用保持不变。 您所做的只是通过在Hands的卡片中添加一个项目来修改其属性之一。

Hand类中的cards使用吸气剂,例如

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

然后更新如下 -

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

尝试

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

试图将add返回的boolean放在索引i ,并且不适用于您的逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM