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

[SOLUCIONADO] La mejor forma de meter datos de diferente tipo a una lista

Estas en el tema de La mejor forma de meter datos de diferente tipo a una lista en el foro de Java en Foros del Web. Estoy aprendiendo Java (vengo de PHP), y me encuentro con que este lenguaje tiene un tipado muy muy fuerte y ando con el siguiente problema: ...
  #1 (permalink)  
Antiguo 19/04/2019, 14:16
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 552
Antigüedad: 6 años, 5 meses
Puntos: 20
Pregunta La mejor forma de meter datos de diferente tipo a una lista

Estoy aprendiendo Java (vengo de PHP), y me encuentro con que este lenguaje tiene un tipado muy muy fuerte y ando con el siguiente problema: quiero armar un array/lista que contenga datos de diferente tipo. Y hasta donde me entero, ¡esto no es posible!

Si hago una consulta a una base de datos, naturalmente voy a recuperar información de diferente tipo: el id es un int, el nombre un bool, la fecha un date, etc. ¿Cómo hago para meter esos datos en un array/lista si no son del mismo tipo?

Lo único que se me ocurre es lo siguiente, y la verdad dudo mucho que sea la mejor forma de hacerlo, ya que parece bastante sucio y poco elegante convertir todos los datos al mismo tipo, para que todo funcione:

Código Java:
Ver original
  1. int numero;
  2. numero = 7;
  3.  
  4. String numeroBIS = String.valueOf(numero);
  5.  
  6. List<String> listaSoloString = new LinkedList<String>();
  7. listaSoloString.add("Sólo");
  8. listaSoloString.add("hay");
  9. listaSoloString.add("cadenas");
  10. listaSoloString.add("aquí");
  11. listaSoloString.add(numeroBIS);
  12.  
  13. System.out.println(listaSoloString);

Saludos,
  #2 (permalink)  
Antiguo 19/04/2019, 15:20
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 730
Antigüedad: 11 años, 1 mes
Puntos: 60
Respuesta: La mejor forma de meter datos de diferente tipo a una lista

Define una clase con campos, cada campo es una columna, luego haces un arreglo, set, etc. cuyos elementos sean de esa clase.
__________________
Visita mi perfil en LinkedIn
  #3 (permalink)  
Antiguo 20/04/2019, 03:58
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.501
Antigüedad: 10 años, 10 meses
Puntos: 188
Respuesta: La mejor forma de meter datos de diferente tipo a una lista

Lo que quiere decir Calgary es que en java representamos elementos de BD con una clase que contendría los campos que figuran en las columnas, y un arreglo de objetos de esta clase sería equivalente a las filas de resultados.

Por ejemplo una tabla Personas con los campos Nombre, Apellidos y Edad se representaría con una Clase Persona que tenga los atributos nombre (String), apellidos (String) y edad (int).

Al realizar la búsqueda en la tabla se crearía un array de objetos a partir de esa clase.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #4 (permalink)  
Antiguo 20/04/2019, 15:17
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 552
Antigüedad: 6 años, 5 meses
Puntos: 20
Pregunta Respuesta: La mejor forma de meter datos de diferente tipo a una lista

Gracias por responder, CalgaryCorpus y Fuzzylog. La verdad que literalmente estoy empezando con Java, así que las amables respuestas que me dan, así sin ejemplos (como se dice: sin palitos ni manzanas, ), se me complican.

Perdón por repetir lo que dicen, pero a mí se me facilita todo si lo hago. ¿La idea es seguir estos pasos?:
  1. Primero armar una clase llamada por ejemplo MiClase que contenga tantos atributos como columnas existen en la tabla de la BBDD de la cual estoy recuperando información.
  2. Declarar una lista llamada miLista
  3. Iterar sobre el ResultSet
  4. En cada iteración instanciar MiClase, y meter en cada atributo del objeto el valor de cada columna de la BBDD de cada registro.
  5. Después agregar este objecto a miLista, y así hasta que se acaben las iteraciones.
  6. ¿Qué obtengo con esto? Así, finalmente obtengo una lista donde cada elemento es un objeto que contiene la info de cada registro de la BBDD.

¿Esto es correcto?

Ahora, no lo dije inicialmente, pero lo comento ahora: el tema es que tengo una clase que se encarga de recuperar la info de la BDDD, y si llegué a FDW fue porque no supe cómo hacer que mi clase devolviera el ResutSet. La pregunta es: ¿armar una lista y hacer que la clase devuelva esta lista de objetos, es la mejor o una de las mejores formas de abordar el tema? ¿Será que existen librerías o clases reconocidas que hagan este trabajo mucho más fácil?
  #5 (permalink)  
Antiguo 22/04/2019, 03:54
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.501
Antigüedad: 10 años, 10 meses
Puntos: 188
Respuesta: La mejor forma de meter datos de diferente tipo a una lista

A ver, hablábamos de teoría

En java ya hay apis que te proporcionan todo ese servicio, y puedes encontrar muchos ejemplos online, como este.

https://www.tutorialspoint.com/jdbc/...ample-code.htm

Aquí, los resultados de la query se vuelcan sobre una clase ResultSet

ResultSet rs = stmt.executeQuery(sql);

Cada registro es accesible por posición o por nombre

int id = rs.getInt("id"); // Acceso por nombre 'age' del int correspondiente a la edad

Lo normal es trabajar de esta manera con bases de datos
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #6 (permalink)  
Antiguo 22/04/2019, 03:55
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.501
Antigüedad: 10 años, 10 meses
Puntos: 188
Respuesta: La mejor forma de meter datos de diferente tipo a una lista

Te paso aqui la api de java 7 (tendrias que buscar la que uses)

https://docs.oracle.com/javase/7/docs/api/

el package que corresponde a esto que estamos viendo es java.sql*
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #7 (permalink)  
Antiguo 08/05/2019, 08:46
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 552
Antigüedad: 6 años, 5 meses
Puntos: 20
De acuerdo Respuesta: La mejor forma de meter datos de diferente tipo a una lista

Gracias a todos. Sus comentarios fueron de mucha ayuda, y logré resolver mi problema tal como ustedes lo indicaron.



La zona horaria es GMT -6. Ahora son las 06:48.