Java - Merge List Items
Explains how to merge two lists in Java. Merge with List.addAll(), merge with Stream, and exclude duplicate elements.
Overview
There are times when you need to merge two lists in Java. This page explains how to merge two lists.
How to Merge Lists Using List.addAll()
The following shows how to merge lists using List.addAll().
package com.devkuma.basic.list;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ListAddAll {
public static void main(String[] args) {
List<String> list1 = Arrays.asList("devkuma", "araikuma", "kimkc", "jiwoo");
List<String> list2 = Arrays.asList("yun", "kim", "kuma");
// Merge lists using List.addAll.
List<String> newList = new ArrayList<String>();
newList.addAll(list1);
newList.addAll(list2);
System.out.println(newList);
}
}
Output:
[devkuma, araikuma, kimkc, jiwoo, yun, kim, kuma]
How to Merge Lists Using Stream.concat()
The following shows how to merge lists using Stream.concat().
package com.devkuma.basic.list;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class StreamConcatLists {
public static void main(String[] args) {
List<String> list1 = Arrays.asList("devkuma", "araikuma", "kimkc", "jiwoo");
List<String> list2 = Arrays.asList("yun", "kim", "kuma");
// Merge lists using Stream.
List<String> newList = Stream.concat(list1.stream(), list2.stream())
.collect(Collectors.toList());
System.out.println(newList);
}
}
Output:
[devkuma, araikuma, kimkc, jiwoo, yun, kim, kuma]
How to Merge Lists Using Stream.flatMap()
The following shows how to merge lists using Stream.flatMap().
package com.devkuma.basic.list;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamFlatMap {
public static void main(String[] args) {
List<String> list1 = Arrays.asList("devkuma", "araikuma", "kimkc", "jiwoo");
List<String> list2 = Arrays.asList("yun", "kim", "kuma");
// Merge lists using Stream.flatMap.
List<List<String>> outer = Arrays.asList(list1, list2);
List<String> newList = outer.stream()
.flatMap(lst -> lst.stream())
.collect(Collectors.toList());
System.out.println(newList);
}
}
Output:
[devkuma, araikuma, kimkc, jiwoo, yun, kim, kuma]
How to Merge Lists with Stream While Excluding Duplicate Elements
This section explains the case where you want to merge two lists in Java while excluding duplicate elements inside them.
You can do this by using Stream.concat() together with .distinct().
import java.util.List;
import java.util.Arrays;
import java.util.Comparator;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class ListJoinExcludeDuplicateElements {
public static void main(String[] args) {
// String lists
List<String> strList1 = Arrays.asList("devkuma", "araikuma", "kimkc", "jiwoo");
List<String> strList2 = Arrays.asList("devkuma", "araikuma", "kimkc");
// Merge Java lists using Stream.
List<String> newStrList = Stream.concat(strList1.stream(), strList2.stream())
.distinct() // Exclude duplicates
.collect(Collectors.toList());
System.out.println(newStrList);
// Number lists
List<Integer> intList1 = Arrays.asList(5, 4, 3, 2, 1);
List<Integer> intList2 = Arrays.asList(1, 2, 3, 4);
// Merge Java lists using Stream.
List<Integer> newIntList = Stream.concat(intList1.stream(), intList2.stream())
.distinct() // Exclude duplicates
.sorted(Comparator.naturalOrder()) // Sort in ascending order
.collect(Collectors.toList());
System.out.println(newIntList);
}
}
Output:
[devkuma, araikuma, kimkc, jiwoo]
[1, 2, 3, 4, 5]