我有一个HashMap<Point, T>数据结构,其中包含映射到类的其他实例的几个点T。当我的类像这样实例化时,这个映射被赋予了一些默认值:
T t1 = new T();
T t2 = new T();
Point p1 = new Point(0, 1);
Point p2 = new Point(0, 2);
HashMap<Point, T> map = new HashMap<Point, T>();
static {
map.put(p1, t1);
map.put(p2, t2);
}
在我的代码中,我将接收包含一个x和一个y值的事件。当我收到其中一个事件时,我正在尝试使用传递的 and 创建一个新对象Point,然后从映射中检索值,如下所示:xy
Point p = new Point(event.getX(), event.getY); // Assume (x, y) = (0, 1) (p1)
if(p.equals(p1)
T t = map.get(p);
虽然在这种情况下p等于(使用( x p1, y) = (0, 1) 我null从map.以防止碰撞。hashCode()Point (Point2D)equals
我的问题是:如何从map使用新实例中检索值p?是否有另一种适合该用例的数据结构?
我想我可以使用toString()或其他一些映射,HashMap<String, T>或者我可能会扩展Point类和Override方法hashCode()以适应我的目的。不过,如果有一种更简洁的方式,我很想听听这些方式。