Не удаляет дубликаты с переопределенными равными и hashCode - PullRequest
0 голосов
/ 28 января 2020

Итак, у меня проблема с hashSet. Я хотел удалить дубликаты из моего arrayList. Поэтому я добавил весь список в HashSet.

Вот мой ученик, где я переопределил equals и HashCode:

public class Student extends Osoba implements Serializable{
private String NumerIndeksu;
ArrayList<Kurs> kursy = new ArrayList <Kurs>();
ArrayList<Osoba> osoby = new ArrayList<Osoba>();
private String x; 

public Student(String Imie, String Nazwisko, String PESEL, int Wiek, String Płeć, String, NumerIndeksu, String x) 
{
    super(Imie, Nazwisko, PESEL, Wiek, Płeć);
    this.NumerIndeksu = NumerIndeksu;
    this.x = x;
    kursy = new ArrayList<Kurs>();
}
public ArrayList<Kurs> getKursy() 
{
    return kursy;
}
public void setKursy(Kurs k) 
{
    kursy.add(k);
}
@Override
public int hashCode() 
{
    final int prime = 31;
    int result = super.hashCode();
    result = prime * result + ((NumerIndeksu == null) ? 0 : NumerIndeksu.hashCode());
    return result;
}
@Override
public boolean equals(Object obj) 
{
    if (this == obj)
        return true;
    if (!super.equals(obj))
        return true;
    if (getClass() != obj.getClass())
        return false;
    Student other = (Student) obj;
    if (NumerIndeksu == null) 
    {
        if (other.getNumerIndeksu() != null)
            return false;
    } else if (!NumerIndeksu.equals(other.NumerIndeksu))
        return false;
    return true;
}

, а вот мой код, где я помещаю студентов в HashSet:

public void UsunDuplikaty()
{   
    for(int i = 0; i < osoby.size(); i++)
    {
        osoby.get(i).getStan();
        System.out.println("__________________");
    }
    System.out.println("\n"+"Po usunieciu"+"\n");

    listaosob.addAll(osoby);
    osoby.removeAll(osoby);

    osoby.addAll(listaosob);
    for(int i = 0; i < osoby.size(); i++)
    {
        osoby.get(i).getStan();
        System.out.println("__________________");
    }
}   

И проблема в том, что у меня все еще есть ученики с одинаковым индексом в моем массиве.

Можете ли вы помочь мне с этим?

...