2011-10-09 49 views
0

我有一個由X個2DPoint組成的數組,我的目標是做一個布爾操作來檢查數組是否有指定的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 
} 
相關問題