Итак, у меня проблема с 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("__________________");
}
}
И проблема в том, что у меня все еще есть ученики с одинаковым индексом в моем массиве.
Можете ли вы помочь мне с этим?