Salve a tutti devo implementare l'iteratore per una lista linkata creata da me.
Ho creato l'interfaccia dictionary<K,V> che estende Iterable <K> e la classe LinkedList<K,V> che implementa Dictionary<K,V>.
Ora ho un problema : Come costruisco l'iteratore per la classe linkedList?
grazie in anticipo


codice:
public interface Dictionary<K, V> extends Iterable<K> {

    public void insert(K key, V value);
    public void delete(K KEY);
    public V search(K key);
}
codice:
public class LinkedList<K, V> implements Dictionary<K,V>{

    Record list = null;
    
    class Record<K,V> {
        K key;
        V value;
        Record successivo;
        Record precedente;
        
        Record(K key, V value){
            this.key = key;
            this.value = value;
        }
    }
    
    
    @Override
    public Iterator<K> iterator() {
        // TODO Auto-generated method stub
        return null;
    }


    @Override
    public void insert(K key, V value) {
        Record nuovo = new Record(key, value);
        if(list==null){
            list = nuovo.successivo = nuovo.precedente = nuovo;
        }else{
            
            nuovo.successivo = list.successivo;
            list.successivo.precedente = nuovo;
            list.successivo = nuovo;
            nuovo.precedente = list;
        }
        
    }


    @Override
    public void delete(K key) {
        Record p = null;
        if(list!=null)
        
            for(p=list.successivo;;p=p.successivo){
                if(p.key.equals(key))
                    break;
                if(p==list){
                    p = null;
                    break;
                }
                    
            }
        
        
        if(p==null)
            throw new RuntimeException("elemento non trovato");
        if(p.successivo == p)
            list = null;
        else {
            if(list==p)
                list = p.successivo;
                p.successivo.precedente = p.successivo;
                p.precedente.successivo =p.precedente;
        }
        
    }


    @Override
    public V search(K key) {
        if(list==null)
            throw new RuntimeException("lista vuota");
        for(Record p =list.successivo;;p=p.successivo){
            if(p.key.equals(key))
                return (V) p.value;
            if(p==list)
                return null;
        }
        
    }