2012-04-22 49 views
0

我有此ArrayList - ArrayList<Object[]> tree ...檢查如果一個ArrayList內的數組元素中含有一定值

我也有這個陣列 - Object[] move ...具有的尺寸爲2。

在我的程序a 唯一將二維數組添加到move[0]並將整數加到move[1]。這個數組然後被添加到ArrayList,然後重複這個過程,所以我有一個'移動'列表。

我的問題是,我不知道該如何查找包含在move[1]元素一定值的ArrayList(「樹」)中的陣列(「行動」) - 作爲move[0]元素將是唯一的每次。

然後我想製作一個所有匹配的數組/列表。例如,一個包含所有move[0]值的數組,其值與move[1]的值爲3相匹配。所以我會留下一個包含所需移動的2D數組的數組/列表。

謝謝, 馬特

+0

試過了什麼?此外,國際海事組織,如果你使用一個對象,例如'Point',而不是2d數組('Object []')。 – 2012-04-22 20:02:04

+1

我推薦改變你的設計,而不是'ArrayList '使用'Map '並且有一個String常量'MOVES'來標識你的二維數組 – 2012-04-22 20:02:11

回答

1

在我看來,你需要的是一個key-value數據結構,你選擇了一個相當奇怪的方式來實現它。
如果您不能使用泛型(由於某種原因您使用的是舊jdk)或使用HashMap使用類型來強制執行類型安全,則應該使用HashTable

1

最簡單的方法是通過你們tree對象迭代和建設新ArrayList與找到的匹配,但是這需要時間線性到tree的大小。 如果你正在尋找速度,那麼你可以保持一個HashMap<Integer, ArrayList<Object[]>>,其中鍵是你存儲在move[1]中的整數,並且該值是具有該鍵的所有移動的列表,因此檢索該列表可以在O(1)

相關問題