Проверьте, существует ли элемент в массиве в Java
Мы хотим проверить, существует ли значение в массиве, и получить его позицию, если это возможно. Вы можете выбрать один из трех методов:- Просмотрите массив и сравните все поля с входным значением и обоими.
- Метод содержит()
- Метод BinarySearch()
1) Найдите элемент, просмотрев массив
В этом примере мы создадим функцию exists() который возвращает позицию искомого значения, если массив существует, в противном случае возвращает -1 и выводит сообщение, указывающее на то, что массив не имеет этого значения.
public class Test {Output
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;
}
}
22 находится в позиции 3
Сравнение строк производится с помощью метода equals(), а не "==". Прочтите статьюКак сравнить две строки в java.
2) Проверьте, существует ли элемент в массиве
Этот метод только проверяет существование элемента. В этом примере в следующем коде можно сравнить типы string и int. Чтобы иметь возможность использовать contains, вам нужно преобразовать весь массив в массив строк с помощью toString(T).
Мы можем предложить решение преобразования int в объект Integer с помощью метода Integer.valueOf(T[i]), в противном случае объект Integer используется с самого начала. Этот код показывает разницу между ними:
import java.util.Arrays;Output
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);
}
}
trueWhy contains() поддерживает тип String, но не поддерживает тип int? Просто потому, что int является примитивным типом, а String становится объектом после создания экземпляра и может быть использован в contains(Object o) который ищет только objects.
Мы можем предложить решение преобразования int в объект Integer с помощью метода Integer.valueOf(T[i]), в противном случае объект Integer используется с самого начала. Этот код показывает разницу между ними:
import java.util.Arrays;Output
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));
}
}
false
true
3) Найдите значение с помощью метода BinarySearch
Этот метод является универсальным, так как он принимает все типы: integer, float, char, double, boolean, short,etc.
import java.util.Arrays;Output:
public class Test {
public static void main(String[] args) {
int T[]={'a','b','c','d','e','f'};
System.out.println("Значение, которое вы ищете, находится в
позиции "+Arrays.binarySearch(T,'d'));
}
}
Значение, которое вы ищете, находится в позиции 3