I suppose you have a Employee class like this:
class Employee {
public Integer id;
public String name;
public Employe(Integer id, String name) {
this.id = id;
this.name = name;
}
}
You can split the problem in three parts:
- Order the arraylist by id using method sort of Collections
- Remove the duplicate from original arraylist
- Add the duplicate into duplicates arraylist
Of course, you have to use Comparator for ordering elements.
Example of implementation:
import java.util.*;
public class Test {
public static void main(String[] args) {
List<Employee> original = new ArrayList<Employee>();
List<Employee> duplicates = new ArrayList<Employee>();
original.add(new Employee(1,"Test 1"));
original.add(new Employee(2,"Test 2"));
original.add(new Employee(3,"Test 3"));
original.add(new Employee(1,"Test 4"));
original.add(new Employee(2,"Test 2"));
Collections.sort(original, new Comparator<Employee>() {
@Override
public int compare(Employee e1, Employee e2)
{
return e1.id.compareTo(e2.id);
}
});
for(int i=1;i<original.size();i++) {
if(original.get(i-1).id.equals(original.get(i).id)) {
duplicates.add(original.get(i));
original.remove(i);
i = i -1;
}
}
}
}