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 🙂