Вопрос-ответ

How do I join two lists in Java?

Как мне объединить два списка в Java?

Есть ли более простой способ, чем:

List<String> newList = new ArrayList<String>();
newList.addAll(listOne);
newList.addAll(listTwo);

Условия:


  1. Не изменяйте исходные списки.

  2. Только JDK.

  3. Никаких внешних библиотек.

Бонусные баллы за однострочную версию или JDK 1.3.

Переведено автоматически
Ответ 1

В Java 8:

List<String> newList = Stream.concat(listOne.stream(), listTwo.stream())
.collect(Collectors.toList());

Java 16+:

List<String> newList = Stream.concat(listOne.stream(), listTwo.stream()).toList();
Ответ 2

На первый взгляд, я могу сократить его на одну строку:

List<String> newList = new ArrayList<String>(listOne);
newList.addAll(listTwo);
Ответ 3

Вы могли бы использовать библиотеку Apache commons-collections:

List<String> newList = ListUtils.union(list1, list2);
Ответ 4

Еще один однострочник Java 8:

List<String> newList = Stream.of(listOne, listTwo)
.flatMap(Collection::stream)
.collect(Collectors.toList());

В качестве бонуса, поскольку Stream.of() является переменным, вы можете объединить столько списков, сколько захотите.

List<String> newList = Stream.of(listOne, listTwo, listThree)
.flatMap(Collection::stream)
.collect(Collectors.toList());
java list