I just want to remove duplicate elements from list. To do this I have written a POJO class Student as :
class Student{
private String roll;
private String name;
public Student(String roll, String name) {
    this.roll = roll;
    this.name = name;
}
@Override
public boolean equals(Object obj) {
    Student st = (Student) obj;
    return st.getRoll().equals(roll);
}
public String getRoll() {
    return roll;
}
public void setRoll(String roll) {
    this.roll = roll;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
@Override
public String toString() {
    return roll ;
}
}
And a test class as below :
public class TestMain {
public static void main(String[] args) {
    List<Student> list = Arrays.asList(
            new Student("19", "goutam kumar singh"),
            new Student("20", "goutam kumar singh"),
            new Student("11", "goutam kumar singh"),
            new Student("19", "goutam kumar singh")
            );
    List<Student> arrayList = new CopyOnWriteArrayList<>(list);
    Set<Student> set = new HashSet<>();
    for(Student st : arrayList)
        set.add(st);
    System.out.println(set);
}
}
but in the output all the four elements in the set but i am expecting only three element as fourth element is duplicate and must be removed.
Where I am going wrong?
 
     
     
    