SsaLaroLana ha scritto:
Salve a tutti!!! Ho un dubbio riguardo all'esercizio...l'ultimo metodo che dovrei implementare "public SortedSet<Student> sortBySurname()" mi chiede di ordinare un Set di Studenti in base al cognome! Quindi io creo una nuova collezzione di studenti di tipo TreeSet, poi mi viene chiesto di ordinare sti benedetti studenti in base al loro cognome con il metodo "compareTo()" ma non riesco a trovare un esempio chiaro da nessuna parte a riguardo e quindi non ho idea di come fare!!! Se qualcuno mi aiutasse con una bella spiegazione glie ne sarei molto molto molto grato!
TreeSet è una collezione "sorted" e di conseguenza "ordered" (
sorted vuol dire che è mantenuta ordinata in base al contenuto degli oggetti e
ordered vuol dire che l'ordine di iterazione è prevedibile, insomma non è "a casaccio". Se una collezione è sorted, è di norma anche ordered).
Come ho detto, TreeSet è "sorted", quindi è il contenuto degli oggetti a definire l'ordine interno nella collezione.
L'ordine però si può basare o sul
natural ordering cioè su Comparable oppure su un Comparator specifico (solo se si usa il costrutture TreeSet(Comparator<? super E> comparator) ).
Se tu dici che ti è stato richiesto di usare espressamente
compareTo(), allora si sta parlando di
Comparable e questo di conseguenza vuol dire una sola cosa: che Student
deve implementare Comparable e definire il compareTo() per confrontare sul cognome.
Se è questo che devi fare ok, ricorda però che il
natural ordering è uno solo, perché Comparable va implementato nella classe degli oggetti da comparare e quindi si può fare una volta sola. Di Comparator (sempre per quella classe di oggetti) invece ne puoi implementare quanti ne vuoi, perché va fatto in classi separate, cioè distinte da quella dei tuoi oggetti.
P.S. E Exam che implementa Comparable<Student> non ha molto senso ....