Объединение двух списков в Java — методы addAll и Stream.concat

Чтобы понять этот пример, нужно знать следующие темы:

  • Список (List) в Java

  • ArrayList в Java

  • Метод ArrayList addAll()

Пример 1: Объединение двух списков через addAll()

import java.util.ArrayList;
import java.util.List;

public class JoinLists {

    public static void main(String[] args) {

        List<String> list1 = new ArrayList<String>();
        list1.add("a");

        List<String> list2 = new ArrayList<String>();
        list2.add("b");

        List<String> joined = new ArrayList<String>();

        joined.addAll(list1);
        joined.addAll(list2);

        System.out.println("list1: " + list1);
        System.out.println("list2: " + list2);
        System.out.println("joined: " + joined);

    }
}

Вывод:

list1: [a]
list2: [b]
joined: [a, b]

В программе выше мы использовали метод addAll() интерфейса List, чтобы присоединить списки list1 и list2 к списку joined.

Пример 2: Объединение двух списков через union()

import java.util.ArrayList;
import java.util.List;
import org.apache.commons.collections.ListUtils;

public class JoinLists {

    public static void main(String[] args) {

        List<String> list1 = new ArrayList<String>();
        list1.add("a");

        List<String> list2 = new ArrayList<String>();
        list2.add("b");

        List<String> joined = ListUtils.union(list1, list2);

        System.out.println("list1: " + list1);
        System.out.println("list2: " + list2);
        System.out.println("joined: " + joined);

    }
}

Вывод этой программы такой же, как в Примере 1.

В программе выше мы использовали метод union(), чтобы объединить заданные списки в joined.

Пример 3: Объединение двух списков через stream

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class JoinLists {

    public static void main(String[] args) {

        List<String> list1 = new ArrayList<String>();
        list1.add("a");

        List<String> list2 = new ArrayList<String>();
        list2.add("b");

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

        System.out.println("list1: " + list1);
        System.out.println("list2: " + list2);
        System.out.println("joined: " + joined);

    }
}

Вывод этой программы такой же, как в Примере 1.

В программе выше мы использовали метод concat() класса Stream, чтобы объединить два списка, преобразованных в потоки. Затем мы преобразуем их обратно в List с помощью метода toList().