Java: Operador IN - Verificando se um valor existe em um Array
Em algumas linguagens de programação existem operadores para operações com conjuntos. Um exemplo é o operador in
em python, como podemos ver abaixo.
Em java não existe o operador in
, mas podemos fazer essa verificação de outras maneiras.
Método contains
A forma mais simples de fazer essa verificação em uma lista de objetos é utilizando o método contains
da interface List
.
Lembrando que podemos converter um array em uma lista de forma bem simples com o método Arrays.asList()
.
Veja no exemplo abaixo:
import java.util.Arrays;
import java.util.List;
public class ListaContem {
public static void main(String[] args) {
Integer[] a = new Integer[]{1, 2, 3, 4, 5};
List<Integer> lista = Arrays.asList(a);
System.out.println("3 in a = " + (lista.contains(3)));
System.out.println("5 in a = " + (lista.contains(5)));
System.out.println("6 in a = " + (lista.contains(6)));
}
}
Saída:
3 in a = true
5 in a = true
6 in a = false
Entretanto, essa forma só funciona para uma lista de Objetos! Não funciona para tipos primitivos, pois java não permite a criação de uma lista de tipo genérico primitivo.
Por exemplo, isso não é permitido em java:
List<int> lista = new ArrayList<>();// <- NÃO COMPILA!!!
Verificação em Tipo primitivo
Vimos que não é possível utilizar o método contains
para arrays de tipo primitivo.
Entretanto, podemos fazer essa verificação com Java 8 usando Lambda e a classe de Stream do tipo primitivo.
No nosso exemplo vamos utilizar a class java.util.stream.IntStream
, mas poderíamos utilizar as classes LongStream
ou DoubleStream
dependendo do tipo primitivo do array.
Veja no exemplo abaixo:
import java.util.stream.IntStream;
public class ContainsParaTipoPrimitivo {
public static void main(String[] args) {
int[] a = new int[]{1, 2, 3, 4, 5};
System.out.println("3 in a = " + (IntStream.of(a).anyMatch(x -> x == 3)));
System.out.println("5 in a = " + (IntStream.of(a).anyMatch(x -> x == 5)));
System.out.println("6 in a = " + (IntStream.of(a).anyMatch(x -> x == 6)));
}
}
Saída:
3 in a = true
5 in a = true
6 in a = false
Referências: