Java 8 how to remove duplicates from list

By | 2018-04-06T21:32:23+00:00 December 2nd, 2017|java8|0 Comments

In this tutorials, I am going to show you how to remove duplicate elements from list using Java 8 syntax.

How to remove duplicates from list :

Here I am creating a Department class, it holds department details.

Department.java


public class Department {
    private int deptId;
    private String deptName;

    public Department(int deptId, String deptName) {
        super();
        this.deptId = deptId;
        this.deptName = deptName;
    }

    public int getDeptId() {
        return deptId;
    }

    public void setDeptId(int deptId) {
        this.deptId = deptId;
    }

    public String getDeptName() {
        return deptName;
    }

    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }

}

We can remove the duplicate elements from a list in following 2 different ways.

Removing Duplicates by assigning List to TreeSet :

Preparing a list containing duplicate Department objects, and remove those duplicate departments using Java8 stream.

Here to removing the duplicate elements, by assigning a list to TreeSet. As TreeSet doesn’t allow the duplicate elements, it removes.


import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import java.util.stream.Collectors;

public class RemoveDuplicates {
    public static void main(String[] args) {
        List<Department> deptList = new ArrayList<Department>();
        deptList.add(new Department(1, "IT"));
        deptList.add(new Department(2, "HR"));
        deptList.add(new Department(1, "IT"));
        deptList.add(new Department(4, "Development"));
        deptList.add(new Department(2, "HR"));

        // Removing the Elements by assigning list to TreeSet
        Set<Department> deptSet = deptList.stream()
                .collect(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Department::getDeptName))));
        deptSet.forEach(dept -> System.out.println("DeptId (" + dept.getDeptId() + ") Name :" + dept.getDeptName()));

    }
}

Output :

DeptId (4) Name :Development
DeptId (2) Name :HR
DeptId (1) Name :IT

Removing Duplicates using removeif():


import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class RemoveDuplicates {
    public static void main(String[] args) {
        List<Department> deptList = new ArrayList<Department>();
        deptList.add(new Department(1, "IT"));
        deptList.add(new Department(2, "HR"));
        deptList.add(new Department(1, "IT"));
        deptList.add(new Department(4, "Development"));
        deptList.add(new Department(2, "HR"));

        Set<String> deptSet = new HashSet<>();

        // directly removing the elements from list if already existed in set
        deptList.removeIf(p -> !deptSet.add(p.getDeptName()));

        deptList.forEach(dept->System.out.println(dept.getDeptId() +" : "+dept.getDeptName()));

    }
}

Output :

1 : IT
2 : HR
4 : Development

Happy Learning 🙂

About the Author:

Hi Folks, you have reach this so far, that shows you like what you are learning. Then why don't you support us to improve for bettor tutorials by leaving your valuable comments and why not you keep in touch with us for latest updates on your favorite blog @ facebook , twitter , Or Google+ ,

Leave A Comment