Login Registre-se
Dúvida com Array Gigante  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
geizon

JavaC Membro

Membro desde: 20/10/2015 09:12:50
Mensagens: 31
Offline

Bom dia amigos,

Estou com uma dúvida/problema...tenho em meu sistema...Listas de Materiais...que são itens fabricados...

Ex:

Produto X
Lista de Material produto X:
* Produto A, Qtd 10
* Produto B, Qtd 20
* Produto C, Qtd 30

Podendo ser esse Produto C um outro item produzido, com uma nova lista de materiais...

Fiz através de um processo uma forma de percorrer todos os itens e os niveis de lista de material, porém como são muitos itens...fica muito lento...pois eu quero agrupar os itens repetidos...então cada item eu faço um novo loop no array para ver se o item já foi inserido ou não... o que ocasiona a lentidão...




Existe uma forma mais "rápida" de eu verificar se o item está em um array ou lista para que meu código fique mais rápido?

Abraço
GGarcia

JavaC Membro
[Avatar]

Membro desde: 28/05/2013 17:12:21
Mensagens: 221
Offline

Bom dia.

No seu caso, não utilize Array. Utilize HashMap.

Um map é infinitamente mais rápido que um ArrayList para buscas.

Eu imagino que seu produto, no sistema, tenha laguma identificação única como um PK ou identificador semelhante.

Monte seu HashMap (ou LinkedHashMap se precisa conserver a ordem de inserção ou fazer sort no futuro) da seguinte forma:



Para inserir os itens, você faz:



Como o Map possui um índice, se você quiser procurar por um produto em específico para atualizar a sua lista de materiais, use



No código acima, se o item já existir no seu Map, o respectivo bean será retornado. Caso negativo, será retornado NULL. Nesse caso, apenas insira o novo registro.

Em caso positivo, você edita o objeto beanHash com os dados que precisa e depois usa o mesmo comando put para colocar o item de volta no Map. Ao fazer um put de um item que já existe (será conferido o índice String com o nome do produto), o Map automaticamente exclui esse registro e coloca o registro novo atualizado. Não há necessidade de fazer mais nada.

Utilizo HashMap para lidar com conversão de dados onde um único Map costuma ter entre 10 e 15 milhões de registros. É muito rápido e eficiente.

Esta mensagem foi editada 1 vez. Última atualização foi em 06/04/2018 10:13:42


If you're here, who's running hell?
geizon

JavaC Membro

Membro desde: 20/10/2015 09:12:50
Mensagens: 31
Offline

Muito obrigado @GGarcia.. vou fazer o teste aqui substituindo e posto o resultado.

Abraço
geizon

JavaC Membro

Membro desde: 20/10/2015 09:12:50
Mensagens: 31
Offline

Em tese parece ter dado certo, porém ainda preciso passar os dados para um iReport..

Eu estava usando o:


com o HashMap não da certo...não consegui converter para lista...pode me ajudar?

Obrigado
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.9 © JForum Team