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);
}
ここに私のコードがあります MyPoint は xy ポイントを格納します。このコードを使用して、重複のない一意の x、y ポイントのセットを取得しています。
私の質問は、 MyPoint で xy 値を取得するにはどうすればよいですか? これは、HashMap を使用して一意の X、Y ポイントをフィルタリングする効率的な方法ですか。また、ここに私が作成した HashCode があります。
私が使用できるより良い HashCode はありますか?