Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/03/2012, 01:12
batistap
 
Fecha de Ingreso: noviembre-2010
Mensajes: 72
Antigüedad: 13 años, 5 meses
Puntos: 1
Tengo una duda en este método de Java

Hola compañeros, estoy intentando hacer un método en Java pero no me funciona de manera correcta y no consigo ver el error.


Os explico lo que me pasa en el método 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".


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:
Código JAVA:
Ver original
  1. List<String> ls = new LinkedList<String>();
  2. for (Iterator<String> conjunto = poid.iterator(); conjunto.hasNext();) {
  3.   String ss = (String) conjunto.next();
  4.    for(String es : m.keySet()){
  5.     if(m.get(es).equals(ss)){
  6.      ls.add(es);
  7.      ml.put(m.get(es),ls);
  8.     }
  9.    }
  10. }






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.

Última edición por batistap; 29/03/2012 a las 04:04