Ciao a tutti.
Ho delle difficoltà a scrivere dei metodi che utilizzano un comparatore...
Allora:
Ho la seguente interfaccia :
Praticamente un'istanza di Contenitore memorizza al suo interno un insieme di elementi , di tipo generico T , mantenendoli ordinati secondo il criterio di un apposito oggetto di tipo Comparator<T> ricevuto come parametro del proprio costruttore.codice:public interface Contenitore<T> extends Iterable<T> { Comparator<T> getComparator(); void setComparatorAndSort(Comparator<T> c); int size(); void inserisci(T elem); boolean rimuovi(T elem); boolean rimuovi(Contenitore<T> l); void aggiungi(Contenitore<T> l); }
Ho fatto l'Override di questi metodi ; ditemi se li ho fatti giusti.
Metodo getComparator() che restituisce l'oggetto Comparator utilizzato per ordinare gli elementi contenuti.
Metodo setComparatorAndSort() che consente di cambiare il criterio di ordinamento specificando un nuovo oggetto Comparator. E' responsabilità di questo metodo riordinare gli elementi contenuti in accordo al nuovo criterio.codice:abstract class ContenitoreAstratto<T> implements Contenitore<T>{ Comparator<T> comparatore; @Override public Comparator<T> getComparator(){ return comparatore; }
Non ho capito come scrivere il metodo inserisci() che aggiunge al contenitore l'elemento ricevuto come parametro inserendolo in ordine secondo quanto stabilito dal Comparator attualmente utilizzato.codice:@Override public void setComparatorAndSort(Comparator<T> c){ Iterator<T> it = this.iterator(); LinkedList<T> ll = new LinkedList<T>(); while(it.hasNext()){ T elem = it.next(); ll.add(elem); } Iterator<T> itl = ll.iterator(); while(itl.hasNext()){ T elem2 = itl.next(); this.inserisci(elem2); } }
inoltre non ho capito anche come scrivere il metodo aggiungi() che inserisce in ordine nel contenitore su cui e' invocato tutti gli elementi del contenitore ricevuto come parametro.
Grazie per l'aiuto.
Ciao

Rispondi quotando