使用Java8特性从两个int数组中获取相同的值
是否可以使用流API比较两个整数数组,并返回一个包含元素的数组,这些元素在两个数组中是相同的,并且具有相同的索引(假设两个数组具有相同的长度) 我这里有一个不使用java 8的方法:使用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
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();
}