我的github

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多维数组获取某一维度的数据

posted on 2024-01-04 15:54  XiaoNiuFeiTian  阅读(682)  评论(0编辑  收藏  举报