Как один список пополнить недостающими элементами другого?

Есть первый список, который на выходе выдаёт [26]

Есть второй [26, 26, 25, 25, 70, 70]

Как мне их соединить, что бы на выходе получить первый список таким [26, 25, 70]?

Если первый будет выглядeть так [26, 58, 1]

А второй [26, 26, 87, 87, 9, 9, 58, 58, 99, 99, 1, 1]

То на выходе должно быть [26, 87, 9, 58, 99, 1]

Это, конечно же, не работает:

List<Long> result = new ArrayList<>();
for (Long a : list1){
    for (Long b : list2){
        if (!a.equals(b)){
            result.add(a);
        }
    }
}

Получаю так:

первый [26]

второй [70, 25, 26, 70, 25, 26]

result [70, 25, 70, 25]

А хотелось бы [70, 25, 26]

И порядок в последнем, я думаю не обязателен, ибо это id для поиска по базе. Если можно с соблюдением порядка, тоже гуд.


Ответы (1 шт):

Автор решения: Vadik

Используйте для этой цели Set:

List<Long> list1 = ... // [26, 58, 1]
List<Long> list2 = ... // [26, 26, 87, 87, 9, 9, 58, 58, 99, 99, 1, 1]
Set<Long> result = new HashSet<>();
result.addAll(list1);
result.addAll(list2);
System.out.println(result); // => [26, 87, 9, 58, 99, 1]
→ Ссылка