Salve a tutti!

Come da titolo ho un problema con un metodo di ordinamento che riceve un oggetto comparator e ordina una lista concatenata da me creata, purtroppo sto impazzendon in quando non mi esce

se qualcuno può aiutarmi e farmi capire dove sbaglio gli sono davvero grato!
questo è il metodo da creare:
"Il metodo sort() riceve un oggetto Comparator<T> e ordina, ad esempio con algoritmo bubble sort, la lista.
Attenzione che quando uno scambio è richiesto tra i contenuti di due nodi, vanno scambiate sole le
informazioni. Non toccare i puntatori durante gli scambi."


ho caopito che bisogna iplementare l'interfaccia Comparator e il metodo compare, questo l'ho fatto, ma credo di averlo sbagliato, anche perchè non so cosa passargli poi veramente al momento dell'invocazione del metodo, ecco il codice che ho scritto (e che è sicuramente errato ):

codice:
public void sort( Comparator comp) {
	ListIterator<T> ite=listIterator();
	Nodo corrente= new Nodo();
	Nodo successivo= new Nodo();int l=size();
	Nodo temp=new Nodo();
	for(int i=0; i<l; i++){
		
    if (comp.compare(corrente, successivo)>0){
		temp.info=corrente.info;
        corrente.info=successivo.info;
        successivo.info=corrente.info;} corrente=corrente.next;successivo=successivo.next;
		    
	  }
	
		
}

  public class  nodoCompare implements Comparator<Nodo>{
   
	public nodoCompare(){}//ordinamento in base alla lunghezza delle stringhe che rappresentano gli argomenti dei nodi
	public int compare(Nodo a, Nodo b) {
		String s1=(String) a.info;String s2=(String) b.info;
		if (s1.length() > s2.length())return 1;
		if (s1.length() < s2.length())return -1;
		return 0;
	}     }