Duda al hacer este método

Hola a todos, tengo una duda con un método que estoy intentando hacer que no consigo que me devuelva lo que realmente quiero.


Lo explico con un ejemplo:

-Tenemos este conjunto:
Set<string> poid = new HashSet<string>();
poid.add("p1");
poid.add("p2");


- y este mapa:
Map<string,string> m = new HashMap<string,string>();
m.put("o1", "p1");
m.put("o2", "p1");
m.put("o11", "p2");
m.put("o12", "p2");


Pues bien intento que devuelva otro mapa en el que agrupe cada "o" con su
"p". En el ejemplo anterior esto sería lo que tendría que devolver:
Map<string,list<string>> ml = new HashMap<string,list<string>>();
<"p1",<"o1","o2">>
<"p2",<"o11","o12">>


Aquí el algoritmo que hice, que no funciona bien:
for (Iterator<string> conjunto = poid.iterator(); conjunto.hasNext();) {
String ss = (String) conjunto.next();
for(String es : m.keySet()){
if(m.get(es).equals(ss)){
ls.add(es);
ml.put(m.get(es),ls);
}
}
}


Con este algoritmo lo que devuelve es esto:
<"p1",<"o1","o2","o11","o12">>
<"p2",<"o1","o2","o11","o12">>


Y lo que realmente debería devolver es esto:
<"p1",<"o1","o2">>
<"p2",<"o11","o12">>


¿Qué está fallando?, ¿qué haría falta en el método?. ¿Podrían ayudarme?.


Saludos y muchas gracias.

</string></string,list<string></string,list<string></string,string></string,string></string></string>

Añade tu respuesta

Haz clic para o