Ciao a tutti.

Ho delle difficoltà a scrivere dei metodi che utilizzano un comparatore...

Allora:

Ho la seguente interfaccia :

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);
	

}
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.

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.

codice:
abstract class ContenitoreAstratto<T> implements Contenitore<T>{
	
	Comparator<T> comparatore;
	
	@Override
	public Comparator<T> getComparator(){
		return comparatore;
	}
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:
	@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);
		}
		
	}
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.

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