¿La mejor estructura de datos de Java para almacenar una tabla de Oracle de 3 columnas? Matriz de 3 columnas? o doble mapa?

StackOverflow https://stackoverflow.com/questions/1612430

Pregunta

¿Cuál es la mejor estructura de datos para almacenar una tabla de Oracle que tiene aproximadamente 140 filas por 3 columnas? Estaba pensando en una matriz multidimensional.

Lo mejor no significa necesariamente que sea más eficiente (pero me gustaría saber sus opiniones) ya que el programa se ejecutará como un trabajo con mucho tiempo de ejecución, pero tengo algunas restricciones:

Es posible que varias claves sean " null " primero. por lo que la primera columna puede tener varios valores nulos. También necesito poder acceder a los elementos de las otras columnas. ¿Algo mejor que una búsqueda lineal para acceder a los datos?

De nuevo, algo como [] [] [] funcionaría ... pero ¿hay algo así como un mapa de 3 columnas al que puedo acceder con la clave o la segunda columna? Sé que los mapas tienen solo dos valores.

Todos los datos probablemente serán cadenas o se convertirán como cadenas.

Gracias

¿Fue útil?

Solución

Si necesita acceder a sus datos por clave y por otra clave, entonces solo usaría 2 mapas para eso y definiría una clase separada para mantener su registro.

class Record {
   String field1;
   String field2;
   String field3;
}

y

   Map<String, Record> firstKeyMap = new HashMap<String, Record>();
   Map<String, Record> secondKeyMap = new HashMap<String, Record>();

Otros consejos

Una clase personalizada con 3 campos, y un java.util.List de esa clase.

En este caso, no se obtiene ningún beneficio en los datos de calzado en arreglos, no se obtiene una mejora en el rendimiento y, por supuesto, una mejora en la capacidad de mantenimiento del código.

Este es otro ejemplo de personas que escriben FORTRAN en un lenguaje orientado a objetos.

Java's sobre objetos. Estaría mucho mejor si comenzara a usar objetos para abstraer su problema, ocultar los detalles de los clientes y reducir el acoplamiento.

¿Qué objeto sensible, con comportamiento significativo, representan esos tres elementos? Comenzaría con eso y me preocuparía por las estructuras de datos y la persistencia más adelante.

  

Todos los datos probablemente serán cadenas o se convertirán como cadenas.

Esto está bien si realmente son cadenas, pero te animo a que profundices y veas si puedes hacerlo mejor.

Por ejemplo, si escribe una aplicación que utiliza puntajes de crédito, puede verse tentado a persistir como una columna numérica en una base de datos. Pero puede beneficiarse al analizar el problema con más fuerza y ??encapsular ese valor en un objeto de CreditScore. Cuando tienes eso, te das cuenta de que puedes agregar algo como unidades (" FICO " en lugar de " TransUnion "), escala (rango de 0 a 850), y tal vez un buen comportamiento (por ejemplo, reglas que rigen cuándo reordenar la puntuación). ). Usted encapsula todo en un solo objeto en lugar de dispersar la lógica para operar con puntajes de crédito en toda su base de código.

Comience a pensar menos en términos de tablas y columnas y más sobre los objetos. O cambiar de idioma. Python tiene la noción de tuplas incorporada. Tal vez eso funcione mejor para ti.

Crearé un objeto que asigne su registro y luego crearé una colección de este objeto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top