将3个列表合并到具有唯一值的单个集合中

时间:2018-11-08 03:57:15

标签: java list arraylist collections set

我在Java中有以下3个列表

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

我想将以上三个Integer List合并为一个集合,以使该集合不包含任何重复的值

Collection = list1 + list2 + list3

请在这里建议可以使用哪些收藏集。

2 个答案:

答案 0 :(得分:1)

您可以使用不允许重复的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

答案 1 :(得分:1)

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());
相关问题