2012-04-22 52 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)

相关问题