Gostaria da ajuda de vocês para otimizar uma lógica que eu fiz aqui:
Tenho uma entidade chamada "Tempo" com dois atributos: "tempoConcentracao" e "precipitacao".
Quando eu encontrar valores IGUAIS para o atributo "tempoConcentracao", eu faço o somatório do atributo "precipitacao".
O código abaixo está funcionando, mas o tamanho do meu List de "Tempo" é de 759 mil. Está demorando muito!!!
Você pode criar 2 ou mais lista iguais, dividir o trabalho e disparar algumas threads.
So tem que tomar bastante cuidado com os nullpointer e deixar o programa thread safe.
claro que deve ter outras alternativas, mas foi a unica que me veio a mente
edit: caso você precise entrar apenas uma vez no “if” poderia usar um break.
ViniGodoy
Por favor, ao postar tópicos, dê títulos descritivos. O título “Ajuda com lógica!” não dá qualquer dica do conteúdo do tópico e, portanto, é completamente inútil.
Sua lógica está estranha. Da forma que está, se você tem os tempos concentração A e o B você vai somar 2 vezes, uma quando a lista percorrer o A, outra quando percorrer o B. Provavelmente você poderia alterar sua lógica para realizar essa operação uma vez só, somando os dois valores. Isso reduziria pela metade o tempo para percorrer uma das listas.
xandevieira
A variável “soma” esta declarada onde?
Creio que o uso de
Por favor, ao postar tópicos, dê títulos descritivos. O título “Ajuda com lógica!” não dá qualquer dica do conteúdo do tópico e, portanto, é completamente inútil.
Sua lógica está estranha. Da forma que está, se você tem os tempos concentração A e o B você vai somar 2 vezes, uma quando a lista percorrer o A, outra quando percorrer o B. Provavelmente você poderia alterar sua lógica para realizar essa operação uma vez só, somando os dois valores. Isso reduziria pela metade o tempo para percorrer uma das listas.
ainda tem o prob de
tc2 == tc
E
entanglement
Queria saber mais um detalhe do seu problema. Vou fazer uma tabelinha pequena e quero saber qual é o valor esperado para a variável “soma”.
a) 5 + 7 + 9 + 2 + 2 (os valores de precipitação para 10, e os valores de precipitação para 11)
b) 7 + 9 + 2 (do segundo ao último valor de precipitação para 10, e do segundo ao último valor de precipitação para 11)
c) 2 + 2 (a soma das precipitações para o maior tempo de concentração)
Note que seu código não faz nenhuma das coisas acima (ele calcula 3 * (5 + 7 + 9) + 2 * (2 + 2) + 3 - ele considera o valor 12 que é único, e pelo que você disse, esse valor não é único. ).
E
entanglement
Se for minha alternativa a) a correta, então se sua lista tiver poucos elementos repetidos, pode inverter o problema (achar apenas os elementos únicos, e descontar os valores de precipitação da soma de todas as precipitações. )