Les deux cartes c1 et c4 semblent être égales ... mais ce n'est pas la raison. Je veux qu'ils soient égaux pour qu'un seul d'entre eux soit autorisé dans le Set. : |Objet Java Egalité
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);
}
}
Vous avez utilisé Card2 dans votre question, ne devrait-il pas être Card à la place? Il ne compile pas pour le moment. –
System.out.println (c1.equals (c4)) renvoie true et seules deux cartes sont imprimées dans la boucle: Hearts 10 & Spade 5 (je cours le code en changeant Card2 en Card pour le réparer). Quel est le problème? – JuanZe
juste fyi: 'if (...) renvoie true; sinon, revenez faux: «Pourquoi feriez-vous cela au lieu de« retour ... »? – KitsuneYMG