我有一个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
,然后从映射中检索值,如下所示:x
y
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()
以适应我的目的。不过,如果有一种更简洁的方式,我很想听听这些方式。