U toj klasi se vrsi implementacija metoda compareTo i equals. E sad, razumem da treba da se naprave promene u te dve metode za nase potrebe ali u ovom slucaju nije mi jasno kako ove izmenjene metode uspeju da obave posao.
Prva izmenjene metoda campareTo kasnije ce posluziti u pozivu metoda Collection.sort u main metodu da sortiramo osobe po prezimenima , ali ne vidim cemu sluzi konkretno ova izmena i na koji nacin poredi objekte i sortira ih po abecednom redu
Izmena metode equals ce kasnije posluziti da proverimo da li zadati objekat postoji u listi objekata i prvi deo gde metoda mi je jasan ali ova linija mi nije jasna cemu sluzi i kako obavlja posao return compareTo((Osoba)o)==0;
Evo i celog koda klase Osoba:
public class Osoba implements Comparable<Osoba>{
private String ime;
private String prezime;
public Osoba(String ime, String prezime){
this.ime=ime;
this.prezime=prezime;
}
public int compareTo(Osoba o){
int rez=prezime.compareTo(o.prezime);
if(rez==0)
return ime.compareTo(o.ime);
return rez;
}
public boolean equals(Object o){
if(!(o instanceof Osoba))
return false;
return compareTo((Osoba)o)==0;
}
public String toString(){
return prezime+" , "+ime;
}
}
U main matodi imam ove dve metode koje bi trebalo da su povezane sa ovim izmenama ... ono sto mi nije jasno je na koji nacin su one izmene uticale da se sortira lista po prezimenu i uporede dva objekta ...
ArrayList<Osoba> listaOsoba=new ArrayList<>();
.
.
.
System.out.println("Sortiranje liste");
Collections.sort(listaOsoba);
for (Osoba o:listaOsoba){
System.out.println(o);
}
Osoba trazise=ucitajOsobu();
if(listaOsoba.contains(trazise))
System.out.println("Osoba "+trazise+" se nalazi na listi.");
else
System.out.println("Osoba " +trazise+" se NE NALAZI na listi");
}