Nunca se deve comparar uma String utilizando um '==' e sempre o metodo
equals().
O operador '==' compara se os 2 operandos são exatemente iguais, ambos
"apontam" para a mesma região de memória. Isso funciona muito bem para os
tipos primitivos, agora para objetos, nem sempre.
Já o método equals é um approach mais orientado a objeto, que permite que,
mesmo que estejam em locais de memória totalmente diferentes (ou seja, são,
em teoria, coisas diferentes para máquina virtual) *semânticamente* eles
representam a mesma coisa.
Entender este tipo de coisa é altamente importante para a futura utilização
da API de Collections, principalmente Maps e Sets.
Exemplo:
Set s1 = new LinkedSet();
> Pessoa p1 = new Pessoa("Flavio");
>
> set.add(p1);
>
> Pessoa p2 = new Pessoa("Flavio");
>
> set.add(p2);
>
Se o método equals nao estive implementado corretamente, acabariamos com 2
objetos semânticamente iguais em um conjunto (estrutura que prega a
unicidade de seus elementos).
A mesma coisa vale para as chaves de um mapa.
On Sat, Apr 11, 2009 at 11:01 PM, Luiz Felipe Barbosa <
[email protected]> wrote:
> Boa noite a todos!
> Estava fazendo o 1o problema da lista 1 e fui implementar o código para a
> função 3 da lista, procurar jogo. Eu dei override no método equals na classe
> Jogo, abaixo segue o trecho de código:
>
>
> @Override
> public boolean equals(Object o){
> String s;
> s = (String) o;
>
> if(this.getNome() == s){
> return true;
> }
> else return false;
> }
>
> E abaixo o código da comparação, na classe Main:
>
> static public void searchGame(ArrayList<Jogo> games){
> Console cons = new Console();
> ArrayList<Jogo> found = new ArrayList<Jogo>();
> Runtime rt = Runtime.getRuntime();
> String name;
>
> System.out.println();
> System.out.print("Nome do Jogo=> ");
> name = cons.lerLinha();
> for (Jogo j : games){
> if (j.equals(name)){
> found.add(j);
> }
> }
> System.out.println("Foram achados "+ found.size()+" jogos com '"+
> name+"' como nome.");
> for(Jogo j: found){
> System.out.println(j);
> }
> found = null;
> rt.gc();
>
> }
>
> E não importa quantos jogos com o mesmo nome eu insira na ArrayList, quando
> busco com esse nome o programa sempre diz que não há nenhum. Na verdade meu
> problema já foi sanado, mas gostaria de saber porque a minha idéia original
> não funcionou.
>
> Grato pela ajuda!
>
> --
> ________________________________
> --
> Luiz Felipe da Costa Pericolo Barbosa
> "The Heavens shall Tremble"
> "Take back the web"
>
> >
>
--
Flávio Coutinho da Costa
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Comp
2 - Geral" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/comp2-geral?hl=en
-~----------~----~----~----~------~----~------~--~---