【发布时间】:2012-01-05 19:59:46
【问题描述】:
有多个数组列表(数组列表的数量是先验未知的)。在每个数组列表中,我需要找到一个与其他列表中的元素提供逻辑连接的元素。请注意,仅对非空值进行比较。
ArrayList<Integer[]> list1 = new ArrayList<Integer[]>();
ArrayList<Integer[]> list2 = new ArrayList<Integer[]>();
ArrayList<Integer[]> list3 = new ArrayList<Integer[]>();
list1.add(new Integer[]{1,2,3,4});
list1.add(new Integer[]{1,4,5,6});
list2.add(new Integer[]{1,4,null,null});
list3.add(new Integer[]{null,null,null,5});
list3.add(new Integer[]{null,null,null,6});
在这种情况下,答案应该是:
list1: {1,4,5,6}
list2: {1,4,null,null}
list3: {null,null,null,6}
由于数组列表的数量是先验未知的,我想使用递归。不过,或许还有更简单的解决方案?
【问题讨论】:
-
您的递归解决方案是如何工作的?仅仅因为在编译时存在未知数本身并不能使其成为递归的良好候选者。
-
@Jonathan:这是有道理的,因为正如我所说,比较只针对非空位置。因此,list3 中的第 4 位不会与 list2 中的第 4 位进行比较。
-
我不清楚你所说的逻辑禁令是什么意思。你的意思是在一个固定的交叉点的意义上吗?在组合中的位置并不重要,唯一重要的是成员资格。你能定义它你希望它如何使用吗?
-
@Mark Peters:是的,设置交叉点,位置很重要。但是如果某个位置的值为“null”,那么它就会被忽略。
-
@Mark Peters:我没有递归代码。我只是在考虑最好的解决方案。因此,我在这里询问其他想法。谢谢。