java的lamdba表达式实现两个数组的差集
时间: 2024-03-21 16:38:08 浏览: 103
可以使用Java 8中的Stream API和lambda表达式来实现两个数组的差集操作,具体代码如下所示:
```java
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = {3, 4, 5, 6, 7};
int[] result = Arrays.stream(arr1)
.filter(i -> Arrays.stream(arr2).noneMatch(j -> j == i))
.toArray();
System.out.println(Arrays.toString(result)); // 输出:[1, 2]
```
在这个例子中,我们首先使用`Arrays.stream()`方法将数组转换为一个IntStream流,然后使用`filter()`方法过滤出在`arr1`中存在但是在`arr2`中不存在的元素,最后使用`toArray()`方法将结果收集到一个新的数组中。
相关问题
java的lamdba表达式实现两个list的差集
可以使用Java 8中的Stream API和lambda表达式来实现两个List的差集操作,具体代码如下所示:
```java
List<String> list1 = Arrays.asList("apple", "banana", "orange", "pear");
List<String> list2 = Arrays.asList("orange", "peach", "grape");
List<String> result = list1.stream()
.filter(item -> !list2.contains(item))
.collect(Collectors.toList());
System.out.println(result); // 输出:[apple, banana, pear]
```
在这个例子中,我们首先使用`stream()`方法将List转换为一个Stream流,然后使用`filter()`方法过滤出在`list1`中存在但是在`list2`中不存在的元素,最后使用`collect()`方法将结果收集到一个新的List中。
vba求两个数组的差集
在 VBA 中,可以通过循环遍历数组的方式求两个数组的差集,具体代码实现如下:
```
Sub Difference()
Dim arr1() As Variant, arr2() As Variant
Dim diff() As Variant
Dim i As Long, j As Long, k As Long
Dim isFound As Boolean
'定义两个数组
arr1 = Array(1, 2, 3, 4, 5)
arr2 = Array(3, 4, 5, 6, 7)
'初始化差集数组
ReDim diff(0 To UBound(arr1))
'求差集
k = 0
For i = 0 To UBound(arr1)
isFound = False
For j = 0 To UBound(arr2)
If arr1(i) = arr2(j) Then
isFound = True
Exit For
End If
Next j
If Not isFound Then
diff(k) = arr1(i)
k = k + 1
End If
Next i
'输出差集
ReDim Preserve diff(0 To k - 1)
For i = 0 To UBound(diff)
Debug.Print diff(i)
Next i
End Sub
```
在这个例子中,我们定义了两个数组 `arr1` 和 `arr2`,然后通过双重循环遍历两个数组,判断 `arr1` 中的元素是否在 `arr2` 中出现过,如果没有出现过,则将其加入到差集数组 `diff` 中。最后输出差集数组中的元素。
阅读全文