Approach 1: Using flatMap()
List<List<Integer>> lol = Arrays.asList(Arrays.asList(1,2), Arrays.asList(3,4)); List<Integer> flat = lol.stream().flatMap(List::stream).collect(Collectors.toList()); System.out.println(flat); // [1, 2, 3, 4]
Why it works:
flatMap()
flattens nested streams into a single stream.
Approach 2: Flatten and Collect to Specific Set
Set<Integer> flatDistinct = lol.stream() .flatMap(Collection::stream) .collect(Collectors.toCollection(LinkedHashSet::new)); System.out.println(flatDistinct); // [1, 2, 3, 4]
Why it works:
- Ensures distinct elements while preserving order.