我试图想办法从Vector2 []调用时覆盖GetHashCode().这段代码为我知道相同的对象产生非唯一的哈希:我将下面的类传递给相同的矩形,并生成不同的哈希码.
public Shape(Rectangle r)
{
edges = new Vector2[4];
edges[0] = new Vector2(0, 0);
edges[1] = new Vector2(r.Width, 0);
edges[2] = new Vector2(r.Width, r.Height);
edges[3] = new Vector2(0, r.Height);
Console.Write(edges.GetHashCode() + "\n");
Position = new Vector2(r.X, r.Y);
}
Run Code Online (Sandbox Code Playgroud)
Vector2数组只是一堆整数.如何为整数列表创建唯一的哈希?
我在我的抽象类中绘制了这个hashmap,我的意图是用每个延伸绘制的类的每个实例填充它.我像这样初始化地图:
public static HashMap<Integer, ? extends Drawn> drawns = new HashMap();
Run Code Online (Sandbox Code Playgroud)
我试图像这样添加元素到哈希表:
//this code is in the abstract class Drawn()
public void init(){
idCount++;
setID(idCount);
drawns.put(idCount,this);
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试迭代这样:
for(<Integer, ? extends Drawn> E : Drawn.drawns.values()) {
E.draw();
}
Run Code Online (Sandbox Code Playgroud)
迭代器和init()代码都有编译时错误.但是,如果我将类型参数更改为Drawing而不是我可以编译所有内容,但是当我将子类的实例添加到哈希表时,迭代器不会检测到它们.