Проверьте, существует ли элемент в массиве в Java

Мы хотим проверить, существует ли значение в массиве, и получить его позицию, если это возможно. Вы можете выбрать один из трех методов:
  • Просмотрите массив и сравните все поля с входным значением и обоими.
  • Метод содержит()
  • Метод  BinarySearch()

1) Найдите элемент, просмотрев массив

В этом примере мы создадим функцию exists() который возвращает позицию искомого значения, если массив существует, в противном случае возвращает -1 и выводит сообщение, указывающее на то, что массив не имеет этого значения.

public class Test {

public static void main(String[] args) {
int T[]={1, 5, 2, 22, 14, 3, 18, 52, 40, 88, 73, 27};
int valrech=22;
int position = exists(T, valrech);
if(position!=-1)
System.out.println(valrech+" находится в позиции "+position");

}

static int exists(int T[], int val){
for(int i = 0 ; i< Т.длина; i++){
if(val==T[i])
//возвращает текущую позицию
return i;
}
System.out.println("Значение, которое вы ищете, не существует");
return -1;
}
}
Output

22 находится в позиции 3
Сравнение строк производится с помощью метода equals(), а не "==". Прочтите статьюКак сравнить две строки в java.

2) Проверьте, существует ли элемент в массиве

Этот метод только проверяет существование элемента. В этом примере в следующем коде можно сравнить типы string и int. Чтобы иметь возможность использовать contains, вам нужно преобразовать весь массив в массив строк с помощью toString(T).

import java.util.Arrays; 

public class Test {

public static void main(String[] args) {
int T[]={100,150,180,220,240};
System.out.println(contains(T, "220"));

}

static public boolean contains(int[] T, String val) {
return Arrays.toString(T).contains(val);
}
}
Output

true
Why contains() поддерживает тип String, но не поддерживает тип int? Просто потому, что int является примитивным типом, а String становится объектом после создания экземпляра и может быть использован в contains(Object o) который ищет только objects.

Мы можем предложить решение преобразования int в объект Integer с помощью метода Integer.valueOf(T[i]), в противном случае объект Integer используется с самого начала. Этот код показывает разницу между ними:

import java.util.Arrays; 

public class Test {

public static void main(String[] args) {
int T[]={10,14,28,201,280};
Целое число[] T2 = {10,14,28,201,280};
//массив int
System.out.println(Arrays.asList(T).contains(28));
//массив Integer
System.out.println(Arrays.asList(T2).contains(28));
}
}
Output

false
true

3) Найдите значение с помощью метода BinarySearch

Этот метод является универсальным, так как он принимает все типы: integer, float, char, double, boolean, short,etc.

import java.util.Arrays; 

public class Test {
public static void main(String[] args) {
int T[]={'a','b','c','d','e','f'};
System.out.println("Значение, которое вы ищете, находится в
позиции "+Arrays.binarySearch(T,'d'));
}
}
Output:

Значение, которое вы ищете, находится в позиции 3