我有一个绝对的屏幕点列表,如下:
355.2599 : 408.4894
353.31705 : 409.43512
341.44516 : 418.35184
329.3344 : 427.5607
314.9433 : 435.21622
304.6277 : 440.36212
292.61746 : 444.36887
我还有其他一些观点如下:
160.66528 : 513.35834
319.33472 : 230.71161
304.3659 : 479.40076
我怎么知道第二点是第一点?
例如,当不同点小于10 dp时,应该返回found
;
private boolean checkValidate(List<Point> first, List<Point> second)
{
int accuracy = Helper.dpToPixel(this, 10);
int pointSize = first.size();
int pointFlag = 0;
List<Boolean> poinsValidation = new ArrayList<>();
for(Point line : second)
{
if(pointSize != 0 && pointFlag < pointSize)
{
if(Math.abs(first.get(pointFlag).x - line.x ) <= accuracy && Math.abs(first.get(pointFlag).y - line.y ) <= accuracy)
{
poinsValidation.add(true);
pointFlag++;
}
}
}
if(poinsValidation.size() == first.size())
{
return true;
}
return false;
}
答案 0 :(得分:0)
我建议在两个数组中嵌套循环。尽管嵌套循环不是首选,但在此阶段我无法想到另一种方法。
private boolean checkValidate(List<Point> first, List<Point> second)
{
int accuracy = Helper.dpToPixel(this, 10);
int pointSize = first.size();
int pointSize2 = second.size();
int pointFlag = 0;
List<Boolean> poinsValidation = new ArrayList<>();
for(Point line : second)
{
for(Point points: first){
if(pointSize != 0 && pointSize2 != 0 && pointFlag < pointSize)
{
if(Math.abs(points.x - line.x ) <= accuracy && Math.abs(points.y - line.y ) <= accuracy)
{
poinsValidation.add(true);
pointFlag++;
}
}
}
}
if(poinsValidation.size() == first.size())
{
return true;
}
return false;
}
如果有帮助,请告诉我。