Melhor estrutura de dados Java para armazenar uma tabela Oracle de 3 colunas? 3 Array de coluna? ou mapa duplo?

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

Pergunta

Qual é a melhor estrutura de dados para armazenar uma tabela Oracle que é cerca de 140 linhas por 3 colunas. Eu estava pensando em uma matriz multidimensional.

Por melhor, não significa necessariamente mais eficiente (mas ficaria curioso para saber suas opiniões), já que o programa será executado como um trabalho com tempo de sobra para executar, mas tenho algumas restrições:

É possível que várias chaves sejam "nulas" a princípio. Portanto, a primeira coluna pode ter vários valores nulos. Eu também preciso poder acessar elementos das outras colunas. Algo melhor do que uma pesquisa linear para acessar os dados?

Então, novamente, algo como [] [] [] funcionaria .. mas há algo como um mapa de 3 colunas onde posso acessar pela chave ou pela segunda coluna? Eu sei que os mapas têm apenas dois valores.

Todos os dados provavelmente serão cordas ou lançamentos como cordas.

Obrigado

Foi útil?

Solução

Se você precisar acessar seus dados por chave e por outra chave, eu usaria apenas 2 mapas para isso e definirá uma classe separada para manter seu registro.

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

e

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

Outras dicas

Uma aula personalizada com 3 campos e um java.util.List daquela classe.

Não há benefício nos dados de chifres de sapatos em matrizes, neste caso, você não aprimora o desempenho e certamente nenhuma melhoria na manutenção de código.

Este é outro exemplo de pessoas que escrevem fortran em uma linguagem orientada a objetos.

Java sobre objetos. Você ficaria muito melhor se você começasse a usar objetos para abstrair seu problema, ocultar detalhes para longe dos clientes e reduzir o acoplamento.

Que objeto sensível, com comportamento significativo, esses três itens representam? Eu começaria com isso e me preocuparia com as estruturas de dados e a persistência mais tarde.

Todos os dados provavelmente serão cordas ou lançamentos como cordas.

Tudo bem se eles realmente são cordas, mas eu o encorajo a parecer mais profundo e ver se você pode fazer melhor.

Por exemplo, se você escrever um aplicativo que use pontuações de crédito, poderá ser tentado a persistir como uma coluna numérica em um banco de dados. Mas você pode se beneficiar de olhar para o problema mais difícil e encapsular esse valor em um objeto CreditScore. Quando você tem isso, percebe que pode adicionar algo como unidades ("FICO" versus "TransUnion"), escala (varia de 0 a 850) e talvez algum comportamento rico (por exemplo, regras que regem quando reordenar a pontuação). Você encapsula tudo em um único objeto em vez de espalhar a lógica para operar nas pontuações de crédito em toda a sua base de código.

Comece a pensar menos em termos de tabelas e colunas e mais sobre objetos. Ou mudar de linguagem. Python tem a noção de tuplas incorporadas. Talvez isso funcione melhor para você.

Eu criaria um objeto que mapeia seu registro e, em seguida, criaria uma coleção desse objeto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top