gpt4 book ai didi

java - 如果 ArrayList 包含重复项,则返回 true?然后退回重复的卡?

转载 作者:行者123 更新时间:2023-12-01 18:37:48 24 4
gpt4 key购买 nike

// Return true if there is a duplicate card in the pack
public boolean hasDuplicate() {
ArrayList<Card> nondoop = new ArrayList<Card>();
for (Card c : pack) {
if (nondoop.contains(c)) {
return true;
}
nondoop.add(c);
}
return false;
}

这是我的Java代码,我不明白为什么它不起作用?它总是返回 false。基本上,如果是一包纸牌(一包包含十张纸牌,每张纸牌都是随机创建的(每个纸牌对象都有一个用于卡号及其所属花色的字段),则此方法需要返回 true,因此存在重复纸牌的可能性) .

此外,我正在编写一个返回重复卡的方法,但必须首先完成此操作。

最佳答案

 if (nondoop.contains(c)) {

这会检查 c 引用的对象是否包含在 ArrayList 中。如果你的包只包含不同的 Card 对象,你的方法将永远不会返回 true。

问题是,你认为重复卡牌是什么?如果一个包中有一个 Card 对象多次,您的代码就可以工作,但如果您有具有相同内容(应该是相等的)的不同 Card 对象,则代码就不行。

编辑:如果您想防止代表同一张卡的不同 Card 对象进入 ArrayList,您可以重写 equals() 方法(和 hashCode()) 在 Card 中使您的代码正常工作。

关于java - 如果 ArrayList 包含重复项,则返回 true?然后退回重复的卡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21139294/

24 4 0