Iterando por array – java

Eu queria saber se era melhor ter um método para isso e passar o Array para esse método ou para escrevê-lo toda vez que eu quisesse verificar se um número está no array .

Por exemplo:

  public static boolean inArray(int[] array, int check) { for (int i = 0; i < array.length; i++){ if (array[i] == check) return true; } return false; } 

Obrigado pela ajuda antecipadamente!

Você deve definitivamente encapsular essa lógica em um método.

Não há nenhum benefício em repetir o código idêntico várias vezes.

Além disso, se você colocar a lógica em um método e ela mudar, você só precisará modificar seu código em um só lugar.

Se você quer ou não usar uma biblioteca de terceiros é uma decisão totalmente diferente.

Desde o atlas do Java 1.5.0 (Java 5) o código pode ser limpo um pouco. Array e qualquer coisa que implemente Iterator (por exemplo, Collection s) podem ser colocados em loop como tal:

 public static boolean inArray(int[] array, int check) { for (int o : array){ if (o == check) { return true; } } return false; } 

No Java 8, você também pode fazer algo como:

 public static boolean inArray(int[] array, int check) { return Arrays.stream(array).anyMatch(x -> x == check); } 

Embora a conversão para um stream para isso seja provavelmente um exagero.

Se você estiver usando uma matriz (e puramente uma matriz), a pesquisa de “contém” é O(N) , porque, no pior caso, você deve iterar a matriz inteira. Agora, se a matriz estiver organizada, você pode usar uma pesquisa binária, o que reduz o tempo de pesquisa para log(N) com a sobrecarga da sorting.

Se isso é algo que é chamado repetidamente, coloque-o em uma function:

 private boolean inArray(int[] array, int value) { for (int i = 0; i < array.length; i++) { if (array[i] == value) { return true; } } return false; } 

Você pode importar a lib org.apache.commons.lang.ArrayUtils

Existe um método estático onde você pode passar em uma matriz int e um valor para verificar.

contains (int [] array, int valueToFind) Verifica se o valor está na matriz especificada.

 ArrayUtils.contains(intArray, valueToFind); 

API ArrayUtils

Usando o java 8 Stream API pode simplificar o seu trabalho.

 public static boolean inArray(int[] array, int check) { return Stream.of(array).anyMatch(i -> i == check); } 

É só você ter a sobrecarga de criar um novo Stream from Array , mas isso dá exposição para usar outra API do Stream . No seu caso, você pode não querer criar um novo método para operação de uma linha, a menos que você deseje usá-lo como um utilitário. Espero que isto ajude!