我有这个ArrayList - ArrayList<Object[]> tree
...
我也有这个数组 - Object[] move
...大小为2。
在我的程序中,唯一 2D数组添加到move[0]
,整数添加到move[1]
。然后将此数组添加到ArrayList,然后重复该过程,因此我有一个“移动”列表。
我的问题是我不确定如何在ArrayList('tree')中找到包含move[1]
元素 中某个值的数组('move') - 每次move[0]
元素都是唯一的。
然后我想制作所有比赛的数组/列表。例如,一个数组,其中包含与move[0]
move[1]
值匹配的所有3
值。所以我将留下一个包含所需移动的2D阵列数组/列表。
谢谢, 马特
答案 0 :(得分:1)
最简单的方法是遍历您的tree
对象并使用找到的匹配构建新的ArrayList
,但这需要时间与tree
的大小呈线性关系。
如果您正在寻找速度,那么您可以保持HashMap<Integer, ArrayList<Object[]>>
,其中键是您在move[1]
中存储的整数,并且值是具有该键的所有移动的列表,因此检索该列表可以在O(1)
答案 1 :(得分:1)
在我看来,您需要的是key-value
数据结构,并且您选择了一种奇怪的方式来实现它。
如果您不能使用泛型(由于某种原因您使用旧的jdk)或使用HashTable
使用类型来强制类型安全,则应使用HashMap
。