【发布时间】:2014-09-28 16:56:06
【问题描述】:
有没有办法在一个数组中返回 2 个或更多数组的公共元素?我知道列表下的一些方法可以做到这一点,但有没有办法只使用数组来做到这一点?顺便说一句,我自己创建了一个 get 和 length,因为我正在创建一个名为 OrderedIntList 的数组。
例如:
1,3,5
1,6,7,9,3
1,3,10,11
结果:1,3
我试过这个,它输出两个数组之间的公共元素,而不是全部。 我知道有问题,但我不知道如何让它像它想象的那样工作:(
//返回输入数组的公共元素
public static OrderedIntList common(OrderedIntList ... lists){
int[] list = new int[10];
for(int x = 1; x <= lists.length -1; x++){
for(int q = 0; q < lists[0].length()-1; q++) {
for(int z = 0; z < lists[x].length(); z++) {
if (lists[0].get(q)==lists[x].get(z)){
list[q] = lists[0].get(q);
}
}
}
}
OrderedIntList newlist = new OrderedIntList(list);
return newlist;
}
【问题讨论】:
-
你的问题很好,但你的代码看起来:(
-
纯粹出于好奇 - 为什么要避免使用列表?
-
您的自定义对象不会是数组索引的。您需要先公开底层数组,然后才能对其进行索引。
-
把你的问题分解成更小的问题。创建一个方法
boolean isIntContainedInList(int i, OrderedIntList list)。然后创建一个方法 boolean isIntContainedInAllTheLists(int i, OrderedIntList[] listArray),它使用前面的方法。这些应该是非常简单的方法,但是一旦有了它们,算法就会变得更容易实现。 -
@Ant Veeranna 可能是因为这是一个家庭作业 :)