2010-12-20 23 views
0

Die unter meinem Code,java.util.Set fügt doppelte Einträge

public class Myclass{ 
    some code is here. 
    } 

    public static void main(String args[]){ 
    Set<Myclass> set = new HashSet<Myclass>(); 
    Myclass mc = new Myclass(); 
    for(int i=0;i<2;i++){ 
     set.add(mc); 
    } 
    System.out.println("size of set : "+set.size()); 
    } 

Der obige Code ist die Ausgabe 2 drucken, aber es wird 1. Gibt es eine falsch mit meinem Code, wenn ja, dann bitte schlage mir vor, wie man doppelte Einträge im Set vermeidet. Ich habe die equals() in meiner Myclass-Klasse überschrieben.

Bitte antworten Sie mir so schnell wie möglich.

Vielen Dank.

+1

Haben Sie 'equals' und' hashCode' reimplementiert? –

+1

"Irgendein Code" ist wichtig, besonders wenn es eine der Methoden ist, die von 'Set <>' verwendet werden. –

Antwort

4

Vermutlich müssen Sie equals() und hashCode() für MyClass implementieren, andernfalls wird die Übereinstimmung nicht ordnungsgemäß überprüft.

+0

Hallo, danke für die Antwort. Ich habe bereits equals() in meiner MyClass implementiert, dann werden auch doppelte Einträge hinzugefügt. –

+1

Können Sie Ihre equals() - und hashCode() -Methoden anzeigen? vielleicht implementierst du sie falsch –

+1

@Lokesh: Hast du das "und" vermisst? –

Verwandte Themen