In this shot, we will learn two common ways to remove duplicate elements from an ArrayList
. The methods involve the use of:
distinct
method of the Stream APIset
to remove duplicate elementsWe can use a set
In the code below, we will use LinkedHashSet
import java.util.ArrayList;import java.util.LinkedHashSet;class RemoveDuplicate {public static void main( String args[] ) {ArrayList<Integer> numbers = new ArrayList<>();numbers.add(1);numbers.add(2);numbers.add(1);numbers.add(3);numbers.add(1);numbers.add(4);numbers.add(1);numbers.add(5);System.out.println("Array list with duplicates");System.out.println(numbers);LinkedHashSet<Integer> uniqueNumbers = new LinkedHashSet<>(numbers);ArrayList<Integer> uniqueList = new ArrayList<>(uniqueNumbers);System.out.println("Array list without duplicates");System.out.println(uniqueList);}}
In the code above, we:
Created an ArrayList numbers
with duplicate values.
Created a new LinkedHashSet
from the ArrayList. This will:
Created an ArrayList from the LinkedHashSet
that only contains the unique values.
distinct()
method of the Stream APIThe distinct()
method of the Stream API returns a stream with distinct elements. The elements are compared through the use of the object’s equals
method.
import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.stream.Collectors;class RemoveDuplicate {public static void main( String args[] ) {ArrayList<Integer> numbers = new ArrayList<>();numbers.add(1);numbers.add(2);numbers.add(1);numbers.add(3);numbers.add(1);numbers.add(4);numbers.add(1);numbers.add(5);System.out.println("Array list with duplicates");System.out.println(numbers);List<Integer> uniqueNumbers;uniqueNumbers = numbers.stream().distinct().collect(Collectors.toList());System.out.println("Array list without duplicates");System.out.println(uniqueNumbers);}}
In the code above, we removed the duplicated elements of the numbers
ArrayList through the use of the Stream().distinct()
method that will return a distinct object stream.
The stream of a distinct object is collected into a List through the collect
method. We passed Collectors.toList()
as an argument to tell the collect
method to create a List from the stream.