You can find common elements between two arrays using Java 8 Streams by filtering elements present in both arrays. Below are two approaches:
Approach 1: Using filter()
and contains()
(For Small Arrays)
This approach works well when the second array is small since contains()
runs in O(n) time.
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class CommonElements { public static void main(String[] args) { Integer[] array1 = {1, 2, 3, 4, 5, 6}; Integer[] array2 = {4, 5, 6, 7, 8}; List<Integer> commonElements = Arrays.stream(array1) .filter(Arrays.asList(array2)::contains) // Keep elements found in array2 .collect(Collectors.toList()); System.out.println("Common Elements: " + commonElements); } }
Output:
Common Elements: [4, 5, 6]
Approach 2: Using Set
for Better Performance (O(n) Complexity)
If the second array is large, using a HashSet
improves efficiency.
import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.stream.Collectors; public class CommonElementsOptimized { public static void main(String[] args) { int[] array1 = {1, 2, 3, 4, 5, 6}; int[] array2 = {4, 5, 6, 7, 8}; Set<Integer> set = Arrays.stream(array2).boxed().collect(Collectors.toSet()); // Convert array2 to Set List<Integer> commonElements = Arrays.stream(array1) .filter(set::contains) // Check presence in Set (O(1) lookup) .boxed() .collect(Collectors.toList()); System.out.println("Common Elements: " + commonElements); } }
Output:
Common Elements: [4, 5, 6]