へんなSet
java.util.Set って、同じインスタンスを複数持たないよね。
Object o = new Object(); Set set = new HashSet(); set.add(o); set.add(o); set.add(o); set.add(new String()); assert set.size() == 2;
違うインスタンスであれば、全部はいる。
Set set = new HashSet(); set.add(new Object()); set.add(new Object()); set.add(new Object()); set.add(new String()); assert set.size() == 4;
違うインスタンスであっても、同じクラスのインスタンスは複数入らないコレクションって、標準じゃぁ、ないよねー? 作るしかないかー。
ClassSet set = new HashClassSet(); set.add(new Object()); set.add(new Object()); set.add(new Object()); set.add(new String()); assert set.size() == 2;
こんなん。
追記
Set#add() の仕様を見ていて思った。equalsがtrueであれば入らないのか…。でもなんか気持ち悪いなー、equalsをこんな風にオーバーライドするのは…。