【发布时间】:2012-04-12 15:38:42
【问题描述】:
我正在尝试“组合”两个数组列表,生成一个新的数组列表,其中包含两个组合数组列表中的所有数字,但没有任何重复的元素,它们应该是有序的。我想出了下面的这段代码。我浏览了一遍,这对我来说很有意义,但我不确定我是否可以使用 来比较 arrayLists 中的 get(i)。我将array1 中的所有元素添加到plusArray 中。然后我将通过 plusArray 并将其与 array2 进行比较,以查看在 plusArray 中是否存在任何 array2 的元素。如果他们这样做,我什么也不做,但如果他们不这样做,那么我会尝试将其添加到正确的位置。也许我的嵌套 for 循环使用不正确?注意:ArrayLists 是由用户按升序排列的。
ArrayList<Integer> plusArray = new ArrayList<Integer>();
for(int i = 0; i < array1.size(); i++){
plusArray.add(array1.get(i));
}
for(int i = 0; i < plusArray.size(); i++){
for(int j = 0; j < array2.size(); j++){
if(array2.get(j) < plusArray.get(i)){
plusArray.add(i,array2.get(j));
}
else if(plusArray.get(i).equals(array2.get(j))){
;
}
else if(array2.get(j) > plusArray.get(i)){
plusArray.add(i, array2.get(j));
}
}
更新:我不再收到以下异常。相反,该程序似乎永远运行。我更改了在 条件中添加元素的位置。 /// 当我的数组列表为时,这是我得到的例外: 集合 1:{ 1 2 } 集合 2:{ 1 3 4 }
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Unknown Source)
at java.util.Arrays.copyOf(Unknown Source)
at java.util.ArrayList.grow(Unknown Source)
at java.util.ArrayList.ensureCapacityInternal(Unknown Source)
at java.util.ArrayList.add(Unknown Source)
at IntSet.plus(IntSet.java:92)
at IntSetDriver.main(IntSetDriver.java:61)
【问题讨论】:
-
请发布你得到的异常。