あれ?僕の記憶と違うのはー と思ったのはVectorの記憶?
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>(); Vector<Point> ps_v=new Vector<Point>(); System.out.println(Integer.toString(p.hashCode())); ps.add(p); ps_v.add(p); p.setLocation(0,1); //hashCodeは中身に依存 System.out.println(Integer.toString(p.hashCode())); //ps.add(p); //HashSet System.out.println(Boolean.toString(ps.contains(p))); //Vector System.out.println(Boolean.toString(ps_v.contains(p))); } }
実行結果
0 -1106247680 false true