私は次のコードを持っています:
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)
出力は次のとおりです。11HashSetを使用:1 1 0
ただし、最終行もtrue
(1)になると思っていました。私が行方不明になっている明らかな何かがありますか。
(はい、私のequals
方法とhashcode
方法はいくつかの問題を考慮に入れていないことを知っています...それらは意図的に単純ですが、そこにある問題がこの問題を引き起こしている場合は私に知らせてください。)