| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/03/2010 11:16:34
|
spiderman
JavaTeenager
Membro desde: 21/02/2010 20:13:14
Mensagens: 155
Offline
|
Olá .. Estou precisando achar o valor min e mas em um LinkeList<object); sei que Collection resolve meu problema de achar o min e max se eu tiver <int>, <long>, etc... Mas não estou conseguindo chegar em uma solução para achar o min e max na seguinte situação.
Estou precisando achar o menor workload entre os objetos Task armazenados em minha Lista. Alguem poderia me adjuar??
até
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/03/2010 11:23:26
|
sergiotaborda
GUJ Expert
![[Avatar]](/images/avatar/b4a0e0fbaa9f16d8947c49f4e610b549.png)
Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline
|
spiderman wrote:Olá .. Estou precisando achar o valor min e mas em um LinkeList<object); sei que Collection resolve meu problema de achar o min e max se eu tiver <int>, <long>, etc... Mas não estou conseguindo chegar em uma solução para achar o min e max na seguinte situação.
O problema de usar list é que podem haver mais do que um minimo ou mais do que um máximo.
Na realidade linkedlist não é a melhor opção aqui.
Primeiro ordene a lista usando um comparator que compara o tamanho das tasks.
Os extremos serão agora o minimo e o máximo. Vc pega o ultimo item e o primeiro.
Depois compara com os items imediatamente a seguir e se forem iguais vc tem que decidir qual quer.
Se vc tem a garantia de que apenas existe um máximo e um minimo, ou que , havendo vários qq um serve, então é melhor usar TreeSet
Esta classe faz as contas para vc e imediatemante lhe retorna os máximos e minimo usando last() e first()
|
Criando sua própria API de Validação
Blog do MiddleHeaven |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/03/2010 11:25:54
|
renanedpedroso
JavaTeenager
![[Avatar]](/images/avatar/d011c7278572db1a43f7df991d2f619f.jpg)
Membro desde: 17/03/2010 10:55:10
Mensagens: 180
Localização: Poços de Caldas / MG
Offline
|
Classes:
Espero ter ajudado!
Abraço!
This message was edited 2 times. Last update was at 19/03/2010 11:27:29
|
Renan Eduardo Pedroso
Analista e Desenvolvedor Java |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/03/2010 11:30:11
|
renanedpedroso
JavaTeenager
![[Avatar]](/images/avatar/d011c7278572db1a43f7df991d2f619f.jpg)
Membro desde: 17/03/2010 10:55:10
Mensagens: 180
Localização: Poços de Caldas / MG
Offline
|
sergiotaborda wrote:
Primeiro ordene a lista usando um comparator que compara o tamanho das tasks.
Os extremos serão agora o minimo e o máximo. Vc pega o ultimo item e o primeiro.
Depois compara com os items imediatamente a seguir e se forem iguais vc tem que decidir qual quer.
Se vc tem a garantia de que apenas existe um máximo e um minimo, ou que , havendo vários qq um serve, então é melhor usar TreeSet
Esta classe faz as contas para vc e imediatemante lhe retorna os máximos e minimo usando last() e first()
Pode ser que eu não tenha entendido a dúvida do nosso amigo, mas não acho necessário fazer tudo isso só pra achar o min e o máx.
Se eu entendi errado, desconsiderem os meus posts acima.
Espero ter ajudado!
Abraço!
This message was edited 1 time. Last update was at 19/03/2010 11:33:14
|
Renan Eduardo Pedroso
Analista e Desenvolvedor Java |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/03/2010 11:34:09
|
marcelo.bellissimo
Virtual Machine Man
Membro desde: 17/10/2006 14:17:21
Mensagens: 617
Offline
|
O método do Taborda evita todos esses métodos que você escreveu, acho mais prático, mas é um pouco mais complicado de "entender" á primeira vista...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/03/2010 11:38:31
|
renanedpedroso
JavaTeenager
![[Avatar]](/images/avatar/d011c7278572db1a43f7df991d2f619f.jpg)
Membro desde: 17/03/2010 10:55:10
Mensagens: 180
Localização: Poços de Caldas / MG
Offline
|
Concordo que à primeira vista é mais complicado de "entender", mas se fosse uma lista bem grande, como ficaria o desempenho disso tudo pra ordenar?
Abraço!
|
Renan Eduardo Pedroso
Analista e Desenvolvedor Java |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/03/2010 14:41:35
|
spiderman
JavaTeenager
Membro desde: 21/02/2010 20:13:14
Mensagens: 155
Offline
|
Não sei se minha se eu estou correto, não cheguei a testar ainda mas me parece que o metodo do renanedpedroso está correto. Concordo com nosso amigo taborda, mas o meu problema é que não posso ordenar os elementos dessa lista, ou seja, tenho que manter a ordem de inserção.
t+-
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/03/2010 15:05:39
|
marcelo.bellissimo
Virtual Machine Man
Membro desde: 17/10/2006 14:17:21
Mensagens: 617
Offline
|
spiderman wrote:Não sei se minha se eu estou correto, não cheguei a testar ainda mas me parece que o metodo do renanedpedroso está correto. Concordo com nosso amigo taborda, mas o meu problema é que não posso ordenar os elementos dessa lista, ou seja, tenho que manter a ordem de inserção.
t+-
Aí é um outro caso, e realmente o método do Taborda não seria ideal...
Voce poderia também criar sua própria classe implementando a interface List, e no método add() já verificar se este é o máximo ou o minimo... algo do tipo:
Exemplinho tosco, mas acho que deu pra entender o que eu tentei dizer...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/03/2010 15:09:51
|
renanedpedroso
JavaTeenager
![[Avatar]](/images/avatar/d011c7278572db1a43f7df991d2f619f.jpg)
Membro desde: 17/03/2010 10:55:10
Mensagens: 180
Localização: Poços de Caldas / MG
Offline
|
Essa maneira de guardar o min e max que o Marcelo mostrou é a mais otimizada de todas, pois você (futuramente) não precisará percorrer a lista em nenhum momento.
Marcelo, não achei o exemplo tosco não, muito pelo contrário quando 'bati o olho' nele já identifiquei qual era a idéia, isso é o que vale. hehehehe
Abraço!
This message was edited 1 time. Last update was at 19/03/2010 15:10:17
|
Renan Eduardo Pedroso
Analista e Desenvolvedor Java |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/03/2010 15:14:00
|
marcelo.bellissimo
Virtual Machine Man
Membro desde: 17/10/2006 14:17:21
Mensagens: 617
Offline
|
renanedpedroso wrote:Essa maneira de guardar o min e max que o Marcelo mostrou é a mais otimizada de todas, pois você (futuramente) não precisará percorrer a lista em nenhum momento.
Marcelo, não achei o exemplo tosco não, muito pelo contrário quando 'bati o olho' nele já identifiquei qual era a idéia, isso é o que vale. hehehehe
Abraço!
Hehehe... é, a minha idéia foi personalizar a lista pro requisito dele... então, á cada novo objeto adicionado na List ele já valida o max e o min, sem precisar ficar fazendo mágica, nem iterações, etc etc... não sei se dá pra ficar melhor que isso... não pro caso dele, pelo menos...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/03/2010 16:16:51
|
Paulo Silveira
Administrador
![[Avatar]](/images/avatar/a87ff679a2f3e71d9181a67b7542122c.jpg)
Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline
|
Exemplo do Marcelo é excelente. Faz 2n compatações, melhor que o O(nlogn) que ordenar gastaria, se for apenas esse o proposito. Podia tambem implementar Comparable e chamar Collections.min/max
This message was edited 1 time. Last update was at 19/03/2010 16:17:26
|
http://blog.caelum.com.br twitter: @paulo_caelum
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/03/2010 16:20:07
|
marcelo.bellissimo
Virtual Machine Man
Membro desde: 17/10/2006 14:17:21
Mensagens: 617
Offline
|
Paulo Silveira wrote:Exemplo do Marcelo é excelente. Faz 2n compatações, melhor que o O(nlogn) que ordenar gastaria, se for apenas esse o proposito. Podia tambem implementar Comparable e chamar Collections.min/max
Eu pensei nisso também... aliás, muito bom receber elogios do cara que me ensinou a fazer isso... (fui seu aluno ai na Caelum, Paulo... faz teeeempo! )
|
|
|
 |
|
|