java中如何查找数组
查找数组元素的方法
在Java中查找数组元素可以通过多种方式实现,以下是常见的几种方法:
线性查找 遍历数组中的每个元素,逐个比较目标值。适用于未排序的数组,时间复杂度为O(n)。

public static int linearSearch(int[] arr, int target) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] == target) {
return i;
}
}
return -1;
}
二分查找 适用于已排序的数组,时间复杂度为O(log n)。通过不断缩小搜索范围来快速定位元素。

public static int binarySearch(int[] arr, int target) {
int left = 0;
int right = arr.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid;
}
if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
使用Arrays类的binarySearch方法 Java标准库提供了Arrays.binarySearch()方法,可以直接对排序后的数组进行二分查找。
import java.util.Arrays;
int[] arr = {1, 2, 3, 4, 5};
int index = Arrays.binarySearch(arr, 3);
使用Stream API查找 Java 8及以上版本可以使用Stream API来查找数组元素。
import java.util.Arrays;
import java.util.OptionalInt;
int[] arr = {1, 2, 3, 4, 5};
OptionalInt result = Arrays.stream(arr).filter(x -> x == 3).findFirst();
if (result.isPresent()) {
System.out.println("Found at index: " + result.getAsInt());
}
选择合适的方法
线性查找适用于小规模或未排序的数组,实现简单但效率较低。二分查找效率高但要求数组必须有序。Arrays.binarySearch()是标准库提供的便捷方法,适合已排序数组。Stream API提供了更现代的函数式编程方式,但性能可能不如直接遍历。根据具体需求选择最合适的方法。






