Tem como mostra em um exemplo como que usar o Equals e o Contains.
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!