Я пытаюсь «объединить» два arrayList, получая новый arrayList, который содержит все числа в двух комбинированных arrayLists, но без каких-либо дублирующих элементов, и они должны быть в порядке.Я придумал этот код ниже.Я бегу через это, и это имеет смысл для меня, но я не уверен, могу ли я использовать <или> для сравнения get (i) в arrayLists.Я добавляю все элементы в массиве1 в массив плюс.Затем я прохожу plusArray и сравниваю его с 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));
}
}
ОБНОВЛЕНИЕ: я больше не получаю исключение ниже.Вместо этого кажется, что программа работает вечно.Я изменил местоположение, куда добавлять элементы в условиях <и>./// Вот исключение, которое я получаю, когда мои списки массивов: 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)