Aki vai um teste funcionando:
import java.util.*;
public class FindObjects {
public static void main(String[] args) {
List lista = new ArrayList();
lista.add(new Client(1,"Luis","Petropolis"));
lista.add(new Client(2,"Fred","Jacarepagua"));
lista.add(new Client(3,"Bruno","Jacarepagua"));
lista.add(new Client(4,"Ronaldo","Bangu"));
lista.add(new Client(5,"Jorge","Niteroi"));
Collections.sort(lista);
int indice = Collections.binarySearch(lista,"Fred");
Client cli = (Client) lista.get(indice);
System.out.println(cli);
}
public static class Client implements Comparable{
private int id=0;
private String nome="";
private String endereco="";
public Client(int id, String nome, String endereco){
this.id=id;this.nome=nome;this.endereco=endereco;
}
public void setId(int id) { this.id=id; }
public int getId() { return this.id; }
public void setNome(String nome) { this.nome=nome; }
public String getNome() { return this.nome; }
public void setEndereco(String endereco) { this.endereco=endereco; }
public String getEndereco() { return this.endereco; }
public String toString() {
return "id: " + id + "\nNome: " + nome + "\nEndereco: " + endereco;
}
public int hashCode() {
return nome.hashCode();
}
public int compareTo(Object ob2){
int i1 = this.hashCode();
int i2 = ob2.hashCode();
int retorno=0;
if (i1>i2) retorno=1;
if (i1<i2) retorno=-1;
return retorno;
}
}
}
O legal deste exemplo � o uso do hashCode para tornar o seu objeto �nico
com base no nome. Se n�o fosse usado isso, voce teria que passar um objeto
Client com o nome do cliente que voce deseja encontrar.
Voce tb pode criar um objeto comparator, caso nao queira implementar a
interface Comparable:
Comparator c = new Comparator() {
public int compare(Object ob1, Object ob2){
int i1 = ob1.hashCode();
int i2 = ob2.hashCode();
int retorno=0;
if (i1>i2) retorno=1;
if (i1<i2) retorno=-1;
return retorno;
}
};
Collections.sort(lista, c);
int indice = Collections.binarySearch(lista,"Fred", c);
[]s Bulinha
"Rodrigo
Nascimento" Para:
<[EMAIL PROTECTED]>
<[EMAIL PROTECTED] cc: (cco: RSZ012
Desenvolvimento/Rio/Vale)
com> Assunto: RES: [JUG-Petro] Search
em lists
12/09/2004 03:20
PM
Responder a
jug-petropolis
Marcelo,
Acho que h� algumas formas de fazer, mas uma das mais limpas, na minha
opini�o, � implementar um Comparator (java.util.Comparator), ordernar e
pesquisar utilizando Collections.sort() e Collections.binarySearch()
(java.util.Collections).
[]'s
Rodrigo Goulart
-----Mensagem original-----
De: Marcelo Beckmann [mailto:[EMAIL PROTECTED]
Enviada em: quinta-feira, 9 de dezembro de 2004 13:39
Para: [EMAIL PROTECTED]
Assunto: [JUG-Petro] Search em lists
Ol� a todos,
gostaria da opni�o dos colegas de como proceder
quando se tem um List ou Set, e se quer buscar um elemento
dessa lista que atenda a determinadas condi��es.
Por exemplo uma lista do seguinte objeto:
public class Client
{
/..
private int id;
private String nome
//...
//... getters e setters
}
Gostaria de saber como voc�s buscariam um objeto Client dessa lista cujo
nome seja "JOSE MARIA", sem ter que criar um loop
no meio do c�digo da aplica��o. Para voc�s, qual seria a maneira mais
elegante de implementar isso?
Desde j� agrade�o a aten��o,
[]�s
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
--
No virus found in this incoming message.
Checked by AVG Anti-Virus.
Version: 7.0.289 / Virus Database: 265.4.8 - Release Date: 8/12/2004
--
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.289 / Virus Database: 265.4.8 - Release Date: 8/12/2004
Yahoo! Groups Links
------------------------ Yahoo! Groups Sponsor --------------------~-->
Make a clean sweep of pop-up ads. Yahoo! Companion Toolbar.
Now with Pop-Up Blocker. Get it for free!
http://us.click.yahoo.com/L5YrjA/eSIIAA/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/