for(Context context : contexts) {
if(context.equals(c)){
System.out.println(context.equals(c)+" : "+contexts.contains(c));
}
}
上下文是一個標準的Java TreeSet的equals()和包含()看似矛盾
對我來說,似乎如果這樣會產生任何輸出,它應該產生「真實:真實的」。奇怪的是,它總是以「真:假」的形式出現。
查看文檔;我本質上是複製.contains函數所做的,但得到不同的結果。
任何人都可以解釋這一點嗎?
編輯:從Java文檔(系列):
返回true,如果這個集合包含指定的元素。更正式地說,當且僅當此集合包含至少一個元素e(例如(o == null?e == null:o.equals(e))時才返回true。
請提供'Context'源代碼,如果它是自定義的,或者提供完全限定名稱(包括程序包,如果它是公共訪問的)。 –
@SergeyProkofiev它既不是。不知道爲什麼它應該很重要,因爲它是有問題的TreeSet的實現。 –
不,有什麼問題是你的'equals()'的實現和'compareTo()'的實現。 –