您的位置:首页 > 其它

HashSet重复标准_重复判断的问题,颜色形同,坐标点距离不超过2,则认为是同一个点对象

2014-04-11 10:46 302 查看
/**

* 有如下类型,代表某应用中的点类型

class MyPoint

{

private int x; //横坐标 例如:15

private int y; //纵坐标 例如:22

private String color; //点的颜色,例如:red

...

}

需要把这种类型的对象加入到 HashSet中去,请解决重复判断的问题。

判定要求: 颜色形同,坐标点距离不超过2,则认为是同一个点对象(可以想象因为测量误差,允许坐标有小的飘动)

*/

package cn.itcast.map;

import java.util.HashSet;

import java.util.Set;

public class MyPoint {

private int x; //横坐标 例如:15

private int y; //纵坐标 例如:22

private String color; //点的颜色,例如:red

public MyPoint(int x,int y){

this.x = x;

this.y = y;

}

@Override

public boolean equals(Object o) {

if(o instanceof MyPoint ==false){

return false;

}

MyPoint p = (MyPoint) o;

double m = Math.sqrt(Math.pow((x-p.x), 2)+Math.pow((y-p.y),2));

if(m>=2){

return false;

}

return true;

}

@Override

public int hashCode() {

return 1;

}

@Override

public String toString() {

return "("+this.x+","+this.y+")";

}

public static void main(String [] args){

Set<MyPoint> s = new HashSet<MyPoint>();

s.add(new MyPoint(10, 10));

s.add(new MyPoint(11, 11));

s.add(new MyPoint(20, 20));

s.add(new MyPoint(21, 20));

System.out.println(s);

}

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐