Foros del Web » Programación para mayores de 30 ;) » Java »

Tengo una duda en este método de Java

Estas en el tema de Tengo una duda en este método de Java en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 29/03/2012, 01:12
 
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
  #2 (permalink)  
Antiguo 29/03/2012, 04:04
 
Fecha de Ingreso: noviembre-2010
Mensajes: 72
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Tengo una duda en este método de Java

Ya conseguí darme cuenta del error, aquí la solución correcta:

Código JAVA:
Ver original
  1. List<String> ls;
  2.     for (Iterator<String> conjunto = poid.iterator(); conjunto.hasNext();) {
  3.       String ss = (String) conjunto.next();
  4.          ls = new LinkedList<String>(); // Aquí el fallo, que había que inicializarla cada vez que se entrara en el for primero.
  5.        for(String es : m.keySet()){
  6.         if(m.get(es).equals(ss)){
  7.          ls.add(es);
  8.          ml.put(m.get(es),ls);
  9.         }
  10.        }
  11.     }

Etiquetas: string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 01:40.