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

How to remove duplicates from list :

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

Department.java

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 remove the duplicate elements, by assigning a list to TreeSet. As TreeSet doesn’t allow the duplicate elements, it removes.

RemoveDuplicates.java
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 deptList = new ArrayList();
        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 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():

RemoveDuplicates.java
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 deptList = new ArrayList();
        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 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 🙂