# Java Program to Find Common Elements Between Two Arrays

• Last Updated : 08 Mar, 2021

Given two arrays and our task is to find their common elements.
Examples:

```Input:  Array1 = ["Article", "for", "Geeks", "for", "Geeks"],
Array2 = ["Article", "Geeks", "Geeks"]
Output: [Article,Geeks]

Input:  Array1 = ["a", "b", "c", "d", "e", "f"],
Array2 = ["b", "d", "e", "h", "g", "c"]
Output: [b, c, d, e]```

### Using Iterative Methods

Approach:

1. Get the two java Arrays.
2. Iterate through each and every element of the arrays one by one and check whether they are common in both.
3. Add each common element in the set for unique entries.

## Java

 `// Java Program to find common elements``// in two Arrays``// Using iterative method` `import` `java.io.*;``import` `java.util.*;` `class` `GFG {``    ``private` `static` `void` `FindCommonElemet(String[] arr1,``                                         ``String[] arr2)``    ``{``        ``Set set = ``new` `HashSet<>();``        ``for` `(``int` `i = ``0``; i < arr1.length; i++) {``            ``for` `(``int` `j = ``0``; j < arr2.length; j++) {``                ``if` `(arr1[i] == arr2[j]) {` `                    ``// add common elements``                    ``set.add(arr1[i]);``                    ``break``;``                ``}``            ``}``        ``}``        ``for` `(String i : set) {``            ``System.out.print(i + ``" "``);``        ``}``    ``}` `    ``// main method``    ``public` `static` `void` `main(String[] args)``    ``{` `        ``// create Array 1``        ``String[] arr1``            ``= { ``"Article"``, ``"in"``, ``"Geeks"``, ``"for"``, ``"Geeks"` `};` `        ``// create Array 2``        ``String[] arr2 = { ``"Geeks"``, ``"for"``, ``"Geeks"` `};` `        ``// print Array 1``        ``System.out.println(``"Array 1: "``                           ``+ Arrays.toString(arr1));` `        ``// print Array 2``        ``System.out.println(``"Array 2: "``                           ``+ Arrays.toString(arr2));` `        ``System.out.print(``"Common Elements: "``);` `        ``// Find the common elements``        ``FindCommonElemet(arr1, arr2);``    ``}``}`
Output
```Array 1: [Article, in, Geeks, for, Geeks]
Array 2: [Geeks, for, Geeks]
Common Elements: Geeks for ```

Time Complexity: O(n^2)

#### Using Hashsets:

By using the retainAll() method of the HashSet we can find the common elements between two arrays.

Syntax:

```// This method keeps only the common elements
// of both Collection in Collection1.

Collections1.retainAll(Collections2)```

Approach :

1. Get the two Arrays.
2. Create two hashsets and add elements from arrays tp those sets.
3. Find the common elements in both the sets using Collection.retainAll() method. This method keeps only the common elements of both Collection in Collection1.
4. Set 1 now contains the common elements only.

Below is the implementation of the above approach:

## Java

 `// Java Program to find common elements``// in two Arrays using hashsets``// and retainAll() method``import` `java.io.*;``import` `java.util.*;` `class` `GFG {` `    ``// function to create hashsets``    ``// from arrays and find``    ``// their common element``    ``public` `static` `void` `FindCommonElements(``int``[] arr1,``                                          ``int``[] arr2)``    ``{``        ``// create hashsets``        ``Set set1 = ``new` `HashSet<>();``        ``Set set2 = ``new` `HashSet<>();` `        ``// Adding elements from array1``        ``for` `(``int` `i : arr1) {``            ``set1.add(i);``        ``}` `        ``// Adding elements from array2``        ``for` `(``int` `i : arr2) {``            ``set2.add(i);``        ``}` `        ``// use retainAll() method to``        ``// find common elements``        ``set1.retainAll(set2);``        ``System.out.println(``"Common elements- "` `+ set1);``    ``}` `    ``// main method``    ``public` `static` `void` `main(String[] args)``    ``{``        ``// create Array 1``        ``int``[] arr1``            ``= { ``1``, ``4``, ``9``, ``16``, ``25``, ``36``, ``49``, ``64``, ``81``, ``100` `};` `        ``// create Array 2``        ``int``[] arr2 = { ``100``, ``9``, ``64``, ``7``, ``36``, ``5``, ``16``, ``3``, ``4``, ``1` `};` `        ``// print Array 1``        ``System.out.println(``"Array 1: "``                           ``+ Arrays.toString(arr1));``        ``// print Array 2``        ``System.out.println(``"Array 2: "``                           ``+ Arrays.toString(arr2));``        ``FindCommonElements(arr1, arr2);``    ``}``}`
Output
```Array 1: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
Array 2: [100, 9, 64, 7, 36, 5, 16, 3, 4, 1]
Common elements- [16, 64, 1, 4, 36, 100, 9]
```

Time Complexity: O(n)
Using HashSet:

Approach:

1. Add all elements of first array into a hashset.

2. Iterate the second array and check whether element present in hashset using contains method. If contains == true, add the element to result in array.

Below is the implementation of the above approach:

## Java

 `// Java program for the above approach``import` `java.io.*;``import` `java.util.Arrays;``import` `java.util.HashSet;``import` `java.util.Set;` `class` `Test {` `    ``private` `static` `void` `findCommonElements(``int``[] arr1,``                                           ``int``[] arr2)``    ``{``        ` `        ``// Check if length of arr1 is greater than 0``        ``// and length of arr2 is greater than 0``        ``if` `(arr1.length > ``0` `&& arr2.length > ``0``) {``            ``Set firstSet = ``new` `HashSet();``            ``for` `(``int` `i = ``0``; i < arr1.length; i++) {``                ``firstSet.add(arr1[i]);``            ``}``          ` `            ``// Iterate the elements of the arr2``            ``for` `(``int` `j = ``0``; j < arr2.length; j++) {``                ``if` `(firstSet.contains(arr2[j])) {``                    ``System.out.println(arr2[j]);``                ``}``            ``}``        ``}``    ``}``  ` `    ``// Driver Code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``int``[] arr1 = ``new` `int``[] { ``1``, ``2``, ``3``, ``4``, ``5``, ``6``, ``7` `};``        ``int``[] arr2 = ``new` `int``[] { ``1``, ``3``, ``4``, ``5``, ``6``, ``9``, ``8` `};``      ` `        ``// Function Call``        ``findCommonElements(arr1, arr2);``    ``}``}`
Output
```1
3
4
5
6
```

Time Complexity: O(n)

My Personal Notes arrow_drop_up