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

Referirse a un MAP

Estas en el tema de Referirse a un MAP en el foro de Java en Foros del Web. Hola! Soy novata en java y tengo un pequeño problema Tengos muchos objteos cadena de la clase de Registro donde guardo información de una base ...
  #1 (permalink)  
Antiguo 06/01/2015, 03:14
 
Fecha de Ingreso: enero-2011
Mensajes: 14
Antigüedad: 13 años, 3 meses
Puntos: 0
Referirse a un MAP

Hola!

Soy novata en java y tengo un pequeño problema

Tengos muchos objteos cadena de la clase de Registro donde guardo información de una base de datos. Los he almacenado en un Map:

refs.put(cadena.ref, cadena);

Luego he declarado lo siguiente:

refs.entrySet().stream().forEach((cadena) -> {
String clave=cadena.getKey();
Registro valor=cadena.getValue();
System.out.println(clave+ " " +valor.año+ " " +valor.publicación);})

Mi problema es al querer generar archivos de salida. Para que me funcione, tengo que ponerlo de la sigiente manera:

FileOutputStream fichero6 = new FileOutputStream("C://java//datosSalida//Articulo-referencias.txt");
PrintStream ps6 = new PrintStream(fichero6);

refs.entrySet().stream().forEach((cadena) -> {
String clave=cadena.getKey();
Registro valor=cadena.getValue();

for(int i=0;i<refs.valor.referencias.length;i++){
if (refs.valor.referencias[i].trim().length()==0) continue;
ps6.println(clave+","+valor.referencias[i]);}

Querría saber si puedo llamar a los objetos del map sin tener que voler a definir valor y clave.
Había pensado algo así,pero me da error:

for(int i=0;i<refs.valor.referencias.length;i++){
if (refs.valor.referencias[i].trim().length()==0) continue;
ps6.println(refs.clave+","+refs.valor.referencias[i]);}


Muchas gracias!!
  #2 (permalink)  
Antiguo 06/01/2015, 10:35
(Desactivado)
 
Fecha de Ingreso: enero-2013
Mensajes: 289
Antigüedad: 11 años, 2 meses
Puntos: 10
Respuesta: Referirse a un MAP

Código Java:
Ver original
  1. HashMap hashMap = new HashMap();
  2.  
  3. hashMap.put("1","valor1");
  4. hashMap.put("2","valor2");
  5. hashMap.put("3","valor3");
  6.  
  7. Iterator it = hashMap.entrySet().iterator();
  8. while (it.hasNext()) {
  9. Map.Entry e = (Map.Entry)it.next();
  10. System.out.println(e.getKey() + " " + e.getValue());
  11. }
  #3 (permalink)  
Antiguo 06/01/2015, 12:46
 
Fecha de Ingreso: enero-2011
Mensajes: 14
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Referirse a un MAP

Yo lo tenía hecho con un TreeMap.. pdoría ser?

Map <String,Registro> refs= new TreeMap<>();

Una vez definido tu código, cada vez que quisiese hacer referencia a lo que está dentro de hashMap tendría que poner esto?

while (it.hasNext()) {
Map.Entry e = (Map.Entry)it.next();
System.out.println(e.getKey() + " " + e.getValue());
}

Gracias!
  #4 (permalink)  
Antiguo 06/01/2015, 14:34
(Desactivado)
 
Fecha de Ingreso: enero-2013
Mensajes: 289
Antigüedad: 11 años, 2 meses
Puntos: 10
Respuesta: Referirse a un MAP

ejecutas 1 vez esta línea al principio del bucle
Map.Entry e = (Map.Entry)it.next();

y luego obtienes los valores tantas veces como te haga falta
System.out.println(e.getKey() + " " + e.getValue());
System.out.println(e.getKey() + " " + e.getValue());
System.out.println(e.getKey() + " " + e.getValue());
  #5 (permalink)  
Antiguo 08/01/2015, 15:38
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 5 meses
Puntos: 175
Respuesta: Referirse a un MAP

Espera.. el MAP de por si es un tipo de Array... puedes pasarle arrayList y esas cosas, pero entiende algo antes de continuar..

Map <String,Registro> refs= new TreeMap<>(); no se si está correcto, ya que desconozco tu proceso, pero deberias pasarle a travez de un Hash Map, algo asi

Map<String, Object> param = new HashMap<>();
//creo los parámetros
param.put("FechaDesde", fechaDesde);
param.put("FechaHasta", fechaHasta);
param.put("idSede", idsede);

Esto ultimo implica que, cuando pases el Array el formato no será array{1, "DATO"} sino array{"NOMBRE DE LA POSICION COMO QUIERAS LLAMARLO", Objeto o Dato}, es decir, el primer parámetro debe ser OBLIGATORIAMENTE UN STRING todo depende de como hayas definido tu MAP, en mi caso, ves que le envío un nombre cualquiera que será mi indice, pero no como INT sino ocmo STRING, lo has hecho con MAP <String,Registro>, por ende, si quieres pasarle un indice numerico, no te permitirá hacerlo, puedes pasarle una coleccion también si necesitas.. te dará error ya que los datos que intentas pasarle tal vez no coincidan con los que él espera.. podrias tomar la excepcion desde la consola de salida y mostralo, asi tenemos más idea de qué es lo que no le gusta al JAVA...
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...

Etiquetas: clase, map, string, valor
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




La zona horaria es GMT -6. Ahora son las 17:00.