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.