Есть ли какие-то более краткие формы объедения двух списков в один?
List<Integer> newList = new ArrayList<Integer>();
newList.addAll(list1);
newList.addAll(list2);
объедение также должно происходить без изменения list1 и list2!
Есть ли какие-то более краткие формы объедения двух списков в один?
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);
Экономия на строках кода не всегда означает экономию во времени выполнения...
В маленьких списках не актуально, но в больших будет заметно
Ради интереса замерил все варианты через System.currentTimeMillis()
- вариант со Stream и Collectors у меня самый медленный (списки на 10 000 000 позиций)... - примерно в 3 раза в сравнении с union или при начальной инициализации списка в моем варианте...
Вариант с union неплохой, но та же +1 строка для импорта
итого опять же 2 строки в коде...
В общем, "на вкус и цвет..."
Можно сделать красиво, можно - оптимально...