Pessoal,

Uma coisa que eu n�o coloquei no e-mail que eu mandei com o c�digo � o
seguinte, dependendo do foco da aplica��o pode ser interessante fazer o
sort, usar o binarySearch, mas isto pode consumir recursos desnecess�rios,
muitas vezes um simples for, apesar de n�o ser "bonito", pode lhe dar um
serto ganho de performance.

Voce pode analizar tamb�m outras classes do framework Collections, como a
TreeMap/Map. Caso os nomes n�o se repitam, voce pode armazenar os objetos
utilizando o nome como chave, ela armazena os dados ordenados pela ordem
natural da chave.

Serial algo do tipo:

TreeMap mapa = new TreeMap();
mapa.add("Luis", client1);
mapa.add("Fernando", client2);
mapa.add("Jose", client3);
mapa.add("Claudio", client4);
mapa.add("Mario", client5);

Client cli = (Client) mapa.get("Jose");

E pra listar:

Iterator iterator = mapa.entrySet().iterator();
while(iterator.hasNext()) {
      Client cli = (Client) iterator.next();
      ...
      ...
}

Se no seu caso n�o houver nomes repetidos, acredito que esta seja a melhor
solu��o.


[]s Bulinha








                                                                                
                                                       
                      Andre Fonseca                                             
                                                       
                      <[EMAIL PROTECTED]         Para:    
[EMAIL PROTECTED]                                                 
                      l.com>                   cc:      (cco: RSZ012 
Desenvolvimento/Rio/Vale)                                         
                                               Assunto: Re: [JUG-Petro] Search 
em lists                                                
                      12/10/2004 09:17                                          
                                                       
                      AM                                                        
                                                       
                      Responder a                                               
                                                       
                      jug-petropolis                                            
                                                       
                                                                                
                                                       




Marcelo,

Lendo o javadoc, achei coisas bastante interessantes para te responder:
A inteface List � uma Collection ordenada, sendo assim ela tem um
controle preciso de onde ele coloca os elementos dentro desta lista.
Sendo assim todos os elementos tem um indice, pelo qual vc pode
acessar o elemento. (Veja mais detalhes dentro do javadoc)

Esta interface tem um metodo de procura que tem a assinatura :
 ---->public int lastIndexOf(Object o)
Ele procura o indice mais alto (ultimo colocado) onde o objecto do
parametro seja igual o objeto da posi��o.
[http://java.sun.com/j2se/1.4.2/docs/api/java/util/List.html#lastIndexOf(java.lang.Object)]


Assim dentro do seu problema, faria a seguinte solu��o:

Dentro da sua classe Cliente, reescreveria o metodo equals, para
retornar true quando o nome � igual. Com isso o metodo lastIndex
encontraria o seu objeto pelo parametros que deseja. (O parametro para
achar tera que ser um object Cliente ou ent�o um string - tudo depende
como vai escrever o metodo equals)

Se quiser algo mais generico, te aconselho a solu��o do Luiz, ou
tentar fazer algo dentro do metodo equals.




On Thu, 9 Dec 2004 16:46:28 -0200, Marcelo Beckmann
<[EMAIL PROTECTED]> wrote:
> Oi pessoal,
>
> agrade�o a pronta aten��o de todos,
>
> eu tamb�m tenho utilizado o sort e binarySearch da classe
> Collections, mas isso gera alguns problemas:
>
> 1-Se eu n�o sortar a lista o binarySearch n�o acha nada;
>
> 2-O processo de sort pode consumir recursos de procesamento,  caso seja
> muito repetivo ou se necessite tratar performance.
>
> 3-Se eu precisar que a lista fique com a sua ordem inalterada,
> terei que clonar a mesma (A partir de suas implementa��es,
> ArrayList, LinkedList...) antes de fazer o sort, consumindo
> ainda mais recursos de processamento, e o pior,
> o indice retornado ser� diferente da lista original.
> Terei que pegar o objeto da lista sortada e usar o metodo indexOf
> da lista original...
>
> Gostaria de n�o utilizar esse metodos sort e search da Collections, pois
> acredito ser dispendioso, pois sortar uma lista n�o significa que ele ir�
> direto a um determinado elemento, ou
> seria?
>
> Estou buscando uma maneira menos dispendiosa de buscar objetos em uma
> cole��o, talvez o m�todo indexOf da propria interface List poderia
> funcionar.
>
> Se eu n�o conseguir talvez use a dica do Luiz Alberto,
> que tamb�m � muito v�lida: Criar um Visitor (Gof) que utilize
internamente
> l�gica de reflection e retorne o primeiro objeto
> que atenda a uma condi��o de busca, mas fico preocupado de
> perder performance outra vez.
>
> Ser� que em toda a sdk s� temos essas op��es de busca em
> conjunto de dados?
>
> Agrade�o desde j� a participa��o dos colegas da lista.
>
> Atenciosamente,
>
> Marcelo Beckmann
>
>
_________________________________________________________________________________

> Quer mais velocidade?
> S� com o acesso Aditivado iG, a velocidade que voc� quer na hora que voc�
precisa.
> Clique aqui: http://www.acessoaditivado.ig.com.br
>
>
>
> Yahoo! Groups Links
>
>
>
>
>


--
Abra�os Sinceros e Agradecidos
Andre Fonseca




Yahoo! Groups Links













------------------------ Yahoo! Groups Sponsor --------------------~--> 
$4.98 domain names from Yahoo!. Register anything.
http://us.click.yahoo.com/Q7_YsB/neXJAA/yQLSAA/5cFolB/TM
--------------------------------------------------------------------~-> 

 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/jug-petropolis/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 



Atrašyti