How to remove duplicate elements in ArrayList

Learn to remove duplicate elements in ArrayList in Java using different techniques such as LinkedHashSet in Collections framework and using java 8 stream apis.

1. Remove duplicate elements in arraylist using LinkedHashSet

The LinkedHashSet is the best approach for removing duplicate elements in an arraylist. LinkedHashSet does two things internally :

  • Remove duplicate elements
  • Maintain the order of elements added to it

Java example to remove duplicates in arraylist using LinkedHashSet. In given example, numbersList is an arraylist containing integers and some of them are duplicate numbers e.g. 1, 3 and 5. We add the list to LinkedHashSet, and then get back the content back into the list. The result arraylist does not have duplicate integers.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashSet;

public class ArrayListExample 
{
    public static void main(String[] args) 
    {
        // ArrayList with duplicate elements
        ArrayList<Integer> numbersList = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8));
        
        System.out.println(numbersList);

        LinkedHashSet<Integer> hashSet = new LinkedHashSet<>(numbersList);
        
        ArrayList<Integer> listWithoutDuplicates = new ArrayList<>(hashSet);
        
        System.out.println(listWithoutDuplicates);
    }
}

Program Output.

[1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8]

2. Remove duplicates in arraylist – Java 8

To remove the duplicates from the arraylist, we can use the java 8 stream api as well. Use steam’s distinct() method which returns a stream consisting of the distinct elements comparing by object’s equals() method.

Collect all district elements as List using Collectors.toList().

Java program to remove duplicates from arraylist in java without using Set.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class ArrayListExample 
{
    public static void main(String[] args) 
    {
        // ArrayList with duplicate elements
        ArrayList<Integer> numbersList = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8));
        
        System.out.println(numbersList);

        List<Integer> listWithoutDuplicates = numbersList.stream().distinct().collect(Collectors.toList());
        
        System.out.println(listWithoutDuplicates);
    }
}

Program Output.

[1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8]

Drop me your questions related to how to remove duplicate objects in arraylist in Java.

Happy Learning !!

Was this post helpful?

Join 7000+ Awesome Developers

Get the latest updates from industry, awesome resources, blog updates and much more.

* We do not spam !!

7 thoughts on “How to remove duplicate elements in ArrayList”

  1. Would this approach work, if my arraylist has custom objects like below

    [ {1,”Alex”,”India”},{1,”Alex”,”India”},{2,”Peter”,”India”},{3,”Alex”,”India”}]

    The above list has one duplicate. How can I filter that out. I have to check all the fields to be same to consider that as duplicate.

    Reply
  2. in order to you `stream.distinct()` the stream has to be ordered, so for a stream of unordered values, the `distinct()` would not work

    Reply
  3. public static int[] removeDuplicate(int[] ar) {
    return Arrays.stream(ar).distinct().toArray();
    }

    this would have been much simpler.

    Reply

Leave a Comment

HowToDoInJava

A blog about Java and related technologies, the best practices, algorithms, and interview questions.