ti ringrazio per l aiuto ma non riesco a capire perchè non funziona... qualcuno riesce a capire dov'è che sbaglio?

codice:
 
package domanda1;

import java.util.*;

public class ElencoPersone3 {
    private List<Persona> elenco;
    
    public ElencoPersone3(){
        this.elenco = new ArrayList<Persona>();
    }

    public void aggiungiPersona(Persona persona) {
        this.elenco.add(persona);
    }
    public Map<Integer, List<Persona>> eta2persona() {
        Map<Integer, List<Persona>> eta2persona = new HashMap<Integer, List<Persona>>(); 
        int i;
        int k;
        Persona a;
        List<Persona> list=new ArrayList<Persona>();
        for(i=0; i<this.elenco.size(); i++){
        a = this.elenco.get(i);
        k = a.getEta();
        if(!eta2persona.containsKey(k))
        while(this.elenco.iterator().hasNext()){
        	if(this.elenco.iterator().next().getEta()==k)
        		list.add(this.elenco.iterator().next());
        	this.elenco.iterator().next();
        }
        eta2persona.put(k,list);
        }
        return eta2persona;
    }
    public static void main(String[] args){
    	ElencoPersone3 elenco=new ElencoPersone3();
    	Persona p1;
		Persona p2;
		Persona p3;
		p1 = new Persona("Emilio", 10);
		p2 = new Persona("Stefano", 13);
		p3 = new Persona("Mario", 1);
		Map<Integer, List<Persona>> map = new HashMap<Integer, List<Persona>>();
		map = elenco.eta2persona();
		System.out.println(map.toString());
    }
}