Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java8特性从两个int数组中获取相同的值_Java_Arrays_Java 8_Java Stream - Fatal编程技术网

使用Java8特性从两个int数组中获取相同的值

使用Java8特性从两个int数组中获取相同的值,java,arrays,java-8,java-stream,Java,Arrays,Java 8,Java Stream,是否可以使用流API比较两个整数数组,并返回一个包含元素的数组,这些元素在两个数组中是相同的,并且具有相同的索引(假设两个数组具有相同的长度) 我这里有一个不使用java 8的方法: public static int[] identicalValueAndIndex(int[] array1, int[] array2) { List<Integer> values = new ArrayList<Integer>(); int len = array1

是否可以使用流API比较两个整数数组,并返回一个包含元素的数组,这些元素在两个数组中是相同的,并且具有相同的索引(假设两个数组具有相同的长度)

我这里有一个不使用java 8的方法:

public static int[] identicalValueAndIndex(int[] array1, int[] array2) {
    List<Integer> values = new ArrayList<Integer>();
    int len = array1.length;
    for (int i = 0, k = 0; i < len; i++) {
        if (array1[i] == array2[i]) {
            values.add(array1[i]);
        }
    }
    int[] result = new int[values.size()];
    for (int i = 0; i < values.size(); i++) {
        result[i] = values.get(i);
    }
    return result;
}
但是,该方法不测试索引是否相同

两个数组中的元素相同,并且具有相同的索引 (假设两个数组具有相同的长度)

此代码可以根据要求执行工作:

int[]value=IntStream.range(0,array1.length)
.filter(i->array1[i]==array2[i])
.map(i->array1[i])
.toArray();
public static int[] identicalValueAndIndex(int[] array1, int[] array2) {
    return Arrays.stream(array1)
            .filter(n -> Arrays.stream(array2).anyMatch(num -> n == num))
            .toArray();
}