Ich habe den folgenden Code:
class IncidentTag:
def __init__(self,tag):
self.tag = tag
def equals(self,obj):
return self.tag.equals(obj.tag)
def hashCode(self):
return self.tag.hashCode()
from java.lang import String
from java.util import HashMap
from java.util import HashSet
tag1 = IncidentTag(String("email"))
tag1copy = IncidentTag(String("email"))
tag2 = IncidentTag(String("notemail"))
print tag1.equals(tag1copy)
print tag2.equals(tag2)
print "Now with HashSet:"
hSet = HashSet()
hSet.add(tag1)
hSet.add(tag2)
print hSet.contains(tag1)
print hSet.contains(tag2)
print hSet.contains(tag1copy)
Die Ausgabe ist: 1 1 Jetzt mit HashSet: 1 1 0
Allerdings hätte ich erwartet, dass die letzte Zeile lautet true
(1) auch. Gibt es etwas Offensichtliches, das ich übersehe?
(ja, ich weiß, dass mein equals
Methode und hashcode
Methoden einige Probleme nicht berücksichtigen... sie sind absichtlich einfach, aber lassen Sie mich wissen, ob die Probleme dort dieses Problem verursachen).