Объединение 3 списков в одну коллекцию с уникальными значениями - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть 3 списка в Java, как показано ниже

List<Integer> list1 = query1MysqlRepository.getprocessIds();
List<Integer> list2 = query2MysqlRepository.getprocessIds();
List<Integer> list3 = query3MysqlRepository.getprocessIds();

Я хочу объединить вышеуказанные три Integer List в одну коллекцию, чтобы коллекция не содержала повторяющихся значений

Collection = list1 + list2 + list3

Подскажите, пожалуйста, какую коллекцию можно использовать здесь.

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018
List<Integer> result = Stream.of(list1, list2, list3)
        .flatMap(Collection::stream)
        .distinct()
        .collect(Collectors.toList());

ИЛИ , если вы хотите избежать дублирования в будущем: -

Set<Integer> result = Stream.of(list1, list2, list3)
        .flatMap(Collection::stream)
        .collect(Collectors.toSet());
0 голосов
/ 08 ноября 2018

Вы можете использовать Set, который не допускает дублирование, и просто использовать метод addAll(), чтобы добавить все элементы List в Set:

List<Integer> arr1 = new ArrayList<>(Arrays.asList(1,2,3));
List<Integer> arr2 = new ArrayList<>(Arrays.asList(2,3,4)); 
List<Integer> arr3 = new ArrayList<>(Arrays.asList(4,5,6));
Set<Integer> hashSet = new HashSet<>();
hashSet.addAll(arr1);
hashSet.addAll(arr2);
hashSet.addAll(arr3);
hashSet.forEach(System.out::println);

Выход:

1
2
3
4
5
6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...