Я пытаюсь "объединить" два списка массивов, создавая новый массив, содержащий все числа в двух комбинированных списках массивов, но без каких-либо повторяющихся элементов, и они должны быть в порядке. Я придумал этот код ниже. Я просматриваю это, и это имеет смысл для меня, но я не уверен, могу ли я использовать < или > сравнить get (i) в списках массива. Я добавляю все элементы массива в плюсArray. Затем я перехожу через плюсArray и сравниваю его с array2, чтобы увидеть, существует ли какой-либо из элементов array2 внутри plusArray. Если они это делают, я ничего не делаю, но если они этого не делают, я пытаюсь добавить его в правильное положение. Возможно, мои вложенные петли используются неправильно? Примечание. Список 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));
}
}
UPDATE: я больше не получаю исключение. Вместо этого кажется, что программа работает вечно. Я изменил местоположение, где добавить элементы в < и > условий. /// Вот исключение, которое я получаю, когда мои списки массивов: IntSet 1: {1 2} IntSet 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)