どうやらHashSetに関してもかなり誤解をしていたようで。
てかそうだよね。中に入ってからの話なんて分かってる方が不気味だわw
入れた後にどっかで変更があって衝突するとかそんなん面倒みれるわけ無いね。
僕が一般的なSetを使ったこと無い事がばれてしまうという結果になった。
import java.awt.Point; import java.util.*; public class Test { public static void main(String[] args) { Point p=new Point(0,0); HashSet<Point> ps=new HashSet<Point>(); System.out.println(Integer.toString(p.hashCode())); ps.add(p); p.setLocation(0,1); //hashCodeは中身に依存 System.out.println(Integer.toString(p.hashCode())); ps.add(p); System.out.println(Boolean.toString(ps.contains(p))); System.out.println(Integer.toString(ps.size())); Iterator<Point> i=ps.iterator(); while(i.hasNext()){ System.out.println(i.next().toString()); } } }
実行結果
0 -1106247680 true 2 java.awt.Point[x=0,y=1] java.awt.Point[x=0,y=1]