Java объедение двух списков в один

Есть ли какие-то более краткие формы объедения двух списков в один?

List<Integer> newList = new ArrayList<Integer>();
newList.addAll(list1);
newList.addAll(list2);

объедение также должно происходить без изменения list1 и list2!

List<Integer> newList = new ArrayList<Integer>(list1);
newList.addAll(list2);

это также можно сделать в одну строку так:

List<Integer> newList = Stream.concat(list1.stream(), list2.stream()).collect(Collectors.toList());

или же использовав Apache commons-collection:

List<Integer> newList = ListUtils.union(list1, list2);

Экономия на строках кода не всегда означает экономию во времени выполнения... :slight_smile:
В маленьких списках не актуально, но в больших будет заметно :slight_smile:

Ради интереса замерил все варианты через System.currentTimeMillis() - вариант со Stream и Collectors у меня самый медленный (списки на 10 000 000 позиций)... - примерно в 3 раза в сравнении с union или при начальной инициализации списка в моем варианте...
Вариант с union неплохой, но та же +1 строка для импорта :slight_smile:
итого опять же 2 строки в коде...
В общем, "на вкус и цвет..." :slight_smile:
Можно сделать красиво, можно - оптимально... :slight_smile: