JAVA ArrayList 无法通过 indexOf() 找到元素

JAVA ArrayList cant find element via indexOf()

我正在写一个简短的程序,但遇到了问题。

更多细节有问题。

我有功能

public CardStck from(Card card)
int pos = this.cardList.indexOf(card);

这个例子的卡片是 Card(value=5, color="D")- 正如你在调试屏幕上看到的 即使有那张卡片我在this.cardList 中搜索5(D)(钻石5卡)pos的值为-1(未找到)

谁能告诉我问题出在哪里?

在您的卡片 class 中,实现 "equals" 方法,如下所示:

@Override
public boolean equals(Object t){
    if(!(t instanceof Card)){
        return false; 
    }
    Card c = (Card)t;
    //Compare however you want, ie
    return (c.getValue() == this.getValue()) & (c.getColor().equals(this.getColor());
}

您可能还想包括一些其他空检查或安全内容,例如确保颜色不为空等,但这是一般的想法。