1.使用遍历的方式查找某个元素:
public static int findElement(int[] array, int target) { for (int i = 0; i < array.length; i++) { if (array[i] == target) { return i; } } return -1; // 如果未找到目标元素,返回-1表示不存在 }
2.使用二分查找的方式查找有序数组中某个元素:
public static int binarySearch(int[] array, int target) { int left = 0; int right = array.length - 1; while (left <= right) { int mid = left + (right - left) / 2; if (array[mid] == target) { return mid; } else if (array[mid] < target) { left = mid + 1; } else { right = mid - 1; } } return -1; // 如果未找到目标元素,返回-1表示不存在 }
3.使用Java 8的Stream API进行查找:
public static OptionalInt findElement(int[] array, int target) { return Arrays.stream(array) .filter(element -> element == target) .findFirst(); } // 使用示例: OptionalInt result = findElement(array, target); if (result.isPresent()) { int index = result.getAsInt(); // 对应元素存在,执行相应操作 } else { // 对应元素不存在,执行相应操作 }
4.若数组已经排序,可以使用Arrays类中的binarySearch方法进行查找:
public static int binarySearch(int[] array, int target) { return Arrays.binarySearch(array, target); } // 注意:在使用该方法时,需要保证数组已经排序,若数组未排序,结果可能不正确
>>https://www.cnblogs.com/2008nmj/p/17648174.html(ArrayList进阶查找)
https://cloud.tencent.com/developer/article/2073980(流与多维数组)
flatMap:使用flatMap操作符将多维数组展平为单维数组后再进行查询:
import java.util.*; import java.util.stream.Collectors; import java.util.stream.IntStream; public class Main { public static void main(String[] args) { Integer[][] multiDimensionalArray = {{1, 2}, {3, 4}}; int targetValue = 3; List<Integer> flattenedList = IntStream.range(0, multiDimensionalArray.length) .mapToObj(i -> multiDimensionalArray[i]) .flatMap(Arrays::stream) .collect(Collectors.toList()); Optional<Integer> foundValue = flattenedList.stream() .filter(value -> value == targetValue) .findFirst(); System.out.println(foundValue.orElse(-1)); } }
java多维数组获取某一维度的数据