我正在写一个简短的程序,我有一个问题。JAVA ArrayList不能通过indexOf找到元素()
有更多的细节问题。
我有功能
public CardStck from(Card card)
int pos = this.cardList.indexOf(card);
卡在这个例子是卡(价值= 5,颜色=“d”) - 为u调试屏幕 上看到,即使有该卡IM搜索5( D)(钻石5卡)in this.cardList pos的值为-1(未找到)
有谁能告诉我问题在哪里?
我正在写一个简短的程序,我有一个问题。JAVA ArrayList不能通过indexOf找到元素()
有更多的细节问题。
我有功能
public CardStck from(Card card)
int pos = this.cardList.indexOf(card);
卡在这个例子是卡(价值= 5,颜色=“d”) - 为u调试屏幕 上看到,即使有该卡IM搜索5( D)(钻石5卡)in this.cardList pos的值为-1(未找到)
有谁能告诉我问题在哪里?
在你的卡类中,实现“等于”方法,像这样:
@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());
}
有可能是您要包括其他一些null检查或安全的东西,例如确保颜色不为空等,但这是一般的想法。
你是否实现了'equals()'? – shmosel
您需要重写您的hashCode和equals方法来检查您的等式,以便indexof方法会相应地选择 –
您是否重写了'Card'类中的equals/hasCode方法? – 2017-02-24 18:07:14