Java 当';键';是两个整数吗? 包点; //使用MyPoint然后使用随机x、y点填充阵列arr 公共静态void main(字符串[]args)引发IOException{ HashMap=newHashMap(); 整数val=0; 对于(int i=0;i
这是我的代码MyPoint存储x,y点。我使用这段代码来获得x,y点的唯一集合,没有重复 我的问题是如何在MyPoint中检索XY值?这是使用HashMap筛选唯一的x,y点的有效方法吗?这是我编写的HashCodeJava 当';键';是两个整数吗? 包点; //使用MyPoint然后使用随机x、y点填充阵列arr 公共静态void main(字符串[]args)引发IOException{ HashMap=newHashMap(); 整数val=0; 对于(int i=0;i,java,Java,这是我的代码MyPoint存储x,y点。我使用这段代码来获得x,y点的唯一集合,没有重复 我的问题是如何在MyPoint中检索XY值?这是使用HashMap筛选唯一的x,y点的有效方法吗?这是我编写的HashCode 有更好的哈希代码吗?一个简单的方法是为x和y生成getter方法: package point; //an array arr is populated with random x,y points using MyPoint then public st
有更好的哈希代码吗?一个简单的方法是为x和y生成getter方法:
package point;
//an array arr is populated with random x,y points using MyPoint then
public static void main(String[] args) throws IOException {
HashMap<MyPoint,Integer> map = new HashMap<MyPoint,Integer>();
Integer val =0;
for(int i = 0; i < arr.length ; i++)
{
map.put(arr[i],val);
}
}
//second file.
package point;
public class MyPoint implements Comparable<MyPoint>{
private int x;
private int y;
public MyPoint(int x1, int y1) {
x = x1;
y = y1;
}
public boolean equals(Object p) {
MyPoint p1;
try {p1 = (MyPoint) p;}
catch (ClassCastException ex) {return false;}
return (x == p1.x) && (y == p1.y);
}
public int hashCode() {
return ((y * 31) ^ x);
}
对于HashMap,您可以让它从X坐标映射到具有该X坐标和唯一Y坐标的MyPoints列表(HashMap)。但是,如果您只需要寻找唯一性,您可以将每个MyPoint存储在set/ArrayList中,并使用.equals()查看是否已经存在类似的点方法。希望有帮助!我使用Set entries=map.keySet();for(mypointe:entries){System.out.print(“[”+e.getX()+”,“+”+e.getY()+”);)对于x,y来说似乎工作得很好我正在开发一个可以将它们组合成一个的函数,但我认为这应该可以工作。谢谢!请注意,hashcode不一定是唯一的。出于性能原因,您只希望它最小化冲突。即使
hashcode
始终返回1
HashMap仍然可以工作,so只要等于
工作正常。
public int getX(){
return x;
}
public int getY(){
return y;
}