Collections, Matrizes ou Outra coisa?

Bom dia galera do GUJ,

seguinte estou refazendo um programa que fiz para uma colega de trabalho,

ele carrega jTables baseadas em arquivos TXT, realiza uma comparação com base nas Tables e gera um .CSV

primeramente fiz algo bem “lixo” mas está funcionando,

porem acredito que com o tempo o numero de registros que o programa vai processar nos .TXT irá aumentar significativamente,

coisas de 60.000+ registros e este numero tende a aumentar até o final do ano.

Eis a idéia.

O Usuario carrega um TXT com: “Tipo de dados 1” (disponibliza e armazena as informações no jTable para ser trabalhado posteriormente)
depois ele carrega um TXT com: “Tipo de dados 2” (disponibliza e armazena as informações no jTable para ser trabalhado posteriormente)

após isso ele irá carregar um TXT com: “tipo de dados 1”;“tipo de dados2” (separados por “;”) (disponibliza e armazena as informações no jTable para ser trabalhado posteriormente)

quanto a forma de separar o ponto e virgula eu não tenho duvidas .split(";")

o programa vai até o jTable faz uma contagem de Rows e retorna o valor para um laço (for) dai ele percorre os dados, compara e totaliza o que encontrou armazenando o resultado em uma String para que ele possa escrever o arquivo .CSV ao final da execução (existe outra funcionalidade que permite uma consulta sem a exportação .CSV mas não vem ao caso).

o problema que vejo ai é que arquivos pequenos de 2000 registros estão demorando cerca de 3/4 segundos para gerar o CSV.

imagine como sera com 60.000+ registros.

estou pensando em instanciar uma classe chamada Arquivo para armazenar os dados lidos para um posterior processamento (exportação e outras funcionalidades)

lembro de ter lido algo sobre o Framework Collections que executa esse tipo de serviço rapidamente,

mas não tenho um conhecimento solido disso para trabalhar ainda,

minhas perguntas:

é recomendavel a utilização de Collections ? se sim como coloca-la de foma correta ?

se não o que devo utilizar ?

alguma indicação de artigos ou materiais sobre o assunto, se possivel até mesmo um exemplo rapido sobre como comparar Collections e etc…

qualquer ajuda é Bem-Vinda

Atenciosamente,

@gejava

vc quer armazenar os dados dos csvs em memoria?

eu não recomendo, porque ha grande probabilidade de estouro de memoria “OutOfMemoryError”, ou se o OutOfMemoryError não ocorrer vc vai ter lentidão no sistema que futuramento vai acarretar em um OutOfMemoryError

acho que tem muitas formas de vc resolver isso se armazenar os dados dos csvs numa collection.

uma forma é vc fazer o processo em uma thread separada em background.

agora seria legal vc postar código , o pessoal pode te dar dicas para deixar seu código mais performatico

@DaniloAndrade

o *.CSV é pequeno , algo de 50 registros mas eu queria trabalhar melhor a forma de comparação dos dados para a totalização:

é assim:

para totalizar ele vai nos registros de “tipo 1” ( cerca de 20 registros FIXO isso nunca muda… os 2 primeiros TXT são pequenos) e procura esses valores no TXT que tem “tipo 1” e “tipo 2” seleciona, depois ele vai no “tipo 2” e vai totalizando por dados: " tipo 2 a tem 50 registros de tipo 1", “tipo 2 b tem 700 registros de tipo 1”. e vai escrevendo isso no .CSV

essa forma de comparação é o que me assusta…

é lenta…

lembro de ler algo que Collections fazem isso de forma rapida, ArrayList é bem preciso com relação a isso, queria saber se tem como eu empregar algo do tipo:

percorrer o ArrayList como uma pesquisa tipo “encontre valores em ArrayTipo1Tipo2 onde a primeira coluna contenha x e a segunda y”

ainda não tenho o código novo.

queria projetar como fazer primeiro.

se realmente não for viavel estou aberto a sugestoes de como trabalhar os dados.

Att.

ta meio complexo de entender

coloca o que vc já fez pra gente ver