1
これは私の実装の一部奇妙なHashSetの行動
public class Fault {
int nodeIndex;
boolean val;
}
Display() {
Object [] temp;
temp = aFList2.toArray();
for(int i=0;i<temp.length;i++)
((Fault) temp[i]).display();
}
結果、以下のように障害クラスがある
aFList = new HashSet<Fault>();
bFList = new HashSet<Fault>();
oFList = new HashSet<Fault>();
temp.addAll(aFList);
temp.addAll(bFList);
oFList.addAll(temp);
です:
14_true
6_true
17_false
16_false
16_false
9_false
14_true
が質問:なぜ私は繰り返し、リスト要素を得るのですか? oFListにはすでにこれらの要素が含まれていた可能性がありますが、HashSet
は重複を処理すると考えていました。何か不足していますか?
まあ、そうする必要はありません。しかし、 "等価な"インスタンスを同じエントリにマッピングする必要がある場合は、そうする必要があります。 –
私はequal()を持っていますが、hashcode()はありません。私はそれを必要としますか? – SP6
@pleasedeleteme - そうです。 'equals()'をオーバーライドするたびに、 'equals()'メソッドの動作にマッチする 'hashcode()'が必要です。 –