2011-10-09 2 views
0

배열에 X 점 개수의 2DPoints가 있고, 목표가 지정된 2DPoint가 있는지 확인할 수있는 부울 연산을 수행하는 것이 목표입니다. 다음과 같은 것 :배열에 지정된 객체가 있는지 살펴 봅니다.

Point2D.Double arrayPoints[] = new Point2D.Double[numberOfPoints]; 
Point2D.Double pointPVariable = new Point2D.Double(positionXVariable,positionYVariable); 
arrayPoints[variableNumber] = pointPVariable; 

if(arrayPoints has the Point2D(2.45,6.52)){ 
    do this 
} 

어떻게 부울 연산을 수행 할 수 있습니까 ?? 고마워요!

답변

2
Arrays.asList(arrayPoints).contains(new Point2D.Double(2.45,6.52)) 

비교되는 클래스가 equals 메소드보다 우선하는 한 작동합니다.

+0

이 배열 검색 방법을 지금 발견했습니다. 감사합니다. 지금까지 배열의 요소를 반복하고 모든 요소를 ​​검사하는 것이 가장 좋은 방법이라고 확신했지만 한 줄의 코드로이를 수행하는 것이 더 좋다고 생각합니다 .-). for 루프로 배열을 반복하고 검사하는 것보다이 방법을 사용하여 성능 차이가 있습니까? –

+1

이것은 본질적으로 똑같습니다. 두 방법 모두 O (n)입니다. List를 구성해야하기 때문에 약간의 오버 헤드가 있습니다. 그러나 원래 배열에 대한 참조 (전체 복사본과 반대) 만있는 ArrayList가되므로 무시해도됩니다. – Darcara

+0

설명해 주셔서 감사합니다. 감사합니다. :) –

1

배열이 자연 순서가 Point2D.Double으로 정렬 된 경우 Arrays.binarySearch 메서드를 사용할 수 있습니다.

if (Arrays.binarySearch(arraysPoints, new Point2D.Double(2.45,6.52)) >= 0) { 
    do this 
} 
관련 문제