Tem como mostra em um exemplo como que usar o Equals e o Contains.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Tem como mostra em um exemplo como que usar o Equals e o Contains.
O equals aponta quando um objeto é igual ao outro analisando os valores passados como um todo:
String nome = "a";
String nome2 = "b";
if(nome.equals(nome2){
faz algo;
}
Já o Contains verifica uma sequência de caracteres e retorna verdadeiro quando a string contém uma sequencia de valores especificados, podendo receber uma valor parcial:
String palavra = "java";
String letras = "ja";
if(palavra.contains(letra){
faz algo;
}
Boa tarde Jackson.
Quando criamos duas variáveis com instâncias de alguma classe, por exemplo:
Integer x1 = new Integer(10);
Integer x2 = new Integer(10);
São duas referências diferentes, logo quando utilizamos o operador == o java vai dizer que não são iguais, pois o == compara as referências, não o conteúdo do objeto.
Para comparar o conteúdo, precisamos reescrever o método equals. Obs: A classe Integer já reescreve esse método https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#equals(java.lang.Object)
Exemplo de uma classe ContaBanco:
public class ContaBanco {
private int numeroDaConta;
public ContaBanco(int numeroDaConta) {
this.numeroDaConta = numeroDaConta;
}
public int getNumeroDaConta() {
return numeroDaConta;
}
@Override
public boolean equals(Object obj) {
ContaBanco outraConta = (ContaBanco) obj;
if (this.numeroDaConta == outraConta.getNumeroDaConta()) return true;
return false;
}
}
O contains( ) em lista funciona para verificar na Lista se possui determinado elemento. O java verifica na lista utilizando o método equals para comparar se o objeto passado existe na lista.
Exemplo de classe de teste:
import java.util.ArrayList;
import java.util.List;
public class TesteContaBanco {
public static void main(String[] args) {
ContaBanco contaBancoUm = new ContaBanco(10);
ContaBanco contaBancoDois = new ContaBanco(10);
if (contaBancoUm == contaBancoDois) {
System.out.println("Referências são iguais");
} else {
System.out.println("Referências NÃO são iguais");
}
if (contaBancoUm.equals(contaBancoDois)) {
System.out.println("Conteúdos são iguais");
} else {
System.out.println("Conteúdos NÃO são iguais");
}
List<ContaBanco> contas = new ArrayList<>();
contas.add(contaBancoUm);
contas.add(contaBancoDois);
ContaBanco contaBancoTres = new ContaBanco(10);
if (contas.contains(contaBancoUm)) {
System.out.println("Conta existe na lista");
} else {
System.out.println("Conta NÃO existe na lista");
}
System.out.println("Quantidade de registros na lista: " + contas.size());
}
}
Espero ter ajudado!