Arraylist删除对象

时间:2014-12-21 16:22:18

标签: java

我不确定为什么这段代码不起作用:

所以我们有一个卡阵列:

Card[] hand = new Card[2];

其中包含两张卡片:

 hand[0]=new Card("King","Hearts");
 hand[1]=new Card("Ace","Hearts");

然而,当我尝试:

ArrayList<Card> deck = new ArrayList<Card>(); 

//这里的其他方法用52张牌填充牌组

然后:

deck.remove(hand[0]);
deck.remove(hand[1]);

然后手不被移除

3 个答案:

答案 0 :(得分:2)

您只需要覆盖Object.equals方法,即确定两张卡是否相同。如果您使用的是HashSetHashMap类,则还需要覆盖hashCode()方法。

答案 1 :(得分:1)

通过将两个所需的Object.equals(rank和suit)指定为相等标准,您似乎没有覆盖Card类中的String方法,这反过来意味着{ {1}}方法将返回remove并且不会删除false

我还建议覆盖Card,尽管在这种情况下没有必要。

大多数IDE(例如Eclipse)具有根据您所需的相等标准生成这些方法的功能。

Here关于Java中equals / hashCode合约的一个着名的(但值得商榷的)SO问题。

答案 2 :(得分:1)

ArrayList.remove在内部使用equals来确定要删除的对象,因此需要实现equals。