我正在寫一個簡短的程序,我有一個問題。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