Nit*_*eti -2 java equality data-structures
两张卡片c1和c4似乎相等......但它们不是原因.我希望它们相等,以便在Set中只允许其中一个.:|
import java.util.*;
class Card2
{
private int value;
private String type;
public Card2(int v,String t)
{
value=v;
type=t;
}
public int getValue()
{
return value;
}
public String getType()
{
return type;
}
public String toString()
{
return(type+" "+value);
}
public boolean equals(Object oo)
{
if(!(oo instanceof Card))
return false;
Card cc=(Card) oo;
if(this.getValue()==cc.getValue() && this.getType().equals(cc.getType()))
return true;
else
return false;
}
public int hashCode()
{
return value;
}
public static void main(String args[])
{
HashSet<Card> deck=new HashSet<Card>();
Card c1=new Card(5,"Spade");
Card c2=new Card(10,"Hearts");
Card c3=c2; //Equal Ref card entity
Card c4=new Card(5,"Spade");
System.out.println(c1.equals(c4));
deck.add(c1);
deck.add(c2);
deck.add(c4);
deck.add(c3);
for(Card cc:deck)
System.out.println(cc);
}
}
Run Code Online (Sandbox Code Playgroud)
首先:你叫你的类Card2,但称其为Card无处不在(包括equals()方法,这个答案假定您替换的所有实例.Card2用Card).
如果卡的值和类型相同equals(),则以某种方式定义返回true.
c1有一个值5和一个类型Spade.
c4有一个值5和一个类型Spade.
看起来和我差不多.