Fundamentals 6 min read

Five Ways to Remove Duplicates from a Java ArrayList

This article presents five distinct methods for eliminating duplicate elements from a Java ArrayList, including using LinkedHashSet, Java 8 streams, HashSet with order preservation, manual iteration with contains checks, and nested loops, each accompanied by complete code examples and output results.

Top Architect
Top Architect
Top Architect
Five Ways to Remove Duplicates from a Java ArrayList

The following introduces five different methods to remove duplicate data from a Java ArrayList .

1. Remove duplicates from an ArrayList using LinkedHashSet

LinkedHashSet is an optimal way to delete duplicate data while preserving insertion order. The example creates a list of integers with repeated values, adds it to a LinkedHashSet , and converts the set back to a list.

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

public class ArrayListExample {
    public static void main(String[] args) {
        ArrayList
numbersList = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8));
        System.out.println(numbersList);
        LinkedHashSet
hashSet = new LinkedHashSet<>(numbersList);
        ArrayList
listWithoutDuplicates = new ArrayList<>(hashSet);
        System.out.println(listWithoutDuplicates);
    }
}

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 using Java 8 Stream API

The Stream API’s distinct() method returns a stream of unique elements based on equals() . The distinct stream is collected back into a list.

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
numbersList = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8));
        System.out.println(numbersList);
        List
listWithoutDuplicates = numbersList.stream().distinct().collect(Collectors.toList());
        System.out.println(listWithoutDuplicates);
    }
}

Output:

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

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

3. Remove duplicates using HashSet while preserving order manually

Because HashSet does not guarantee order, we use it only as a duplicate‑check while building a new list that retains the original order.

private static void removeDuplicate(List
list) {
    HashSet
set = new HashSet
(list.size());
    List
result = new ArrayList
(list.size());
    for (String str : list) {
        if (set.add(str)) {
            result.add(str);
        }
    }
    list.clear();
    list.addAll(result);
}

4. Remove duplicates by iterating with contains and rebuilding the list

private static void removeDuplicate(List
list) {
    List
result = new ArrayList
(list.size());
    for (String str : list) {
        if (!result.contains(str)) {
            result.add(str);
        }
    }
    list.clear();
    list.addAll(result);
}

5. Remove duplicates using a double‑for loop

for (int i = 0; i < list.size(); i++) {
    for (int j = 0; j < list.size(); j++) {
        if (i != j && list.get(i) == list.get(j)) {
            list.remove(list.get(j));
        }
    }
}

These five approaches provide developers with options ranging from concise modern APIs to explicit manual algorithms for de‑duplicating an ArrayList in Java.

JavastreamsArrayListHashSetDuplicate RemovalLinkedHashSet
Top Architect
Written by

Top Architect

Top Architect focuses on sharing practical architecture knowledge, covering enterprise, system, website, large‑scale distributed, and high‑availability architectures, plus architecture adjustments using internet technologies. We welcome idea‑driven, sharing‑oriented architects to exchange and learn together.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.