java 计算两个List<String> 右差集 不要用contaions来进行比较
时间: 2024-03-17 20:39:50 浏览: 16
如果不想使用`contains`方法,可以使用Java8的Stream API中的`anyMatch`方法来实现。代码如下:
```java
List<String> list1 = Arrays.asList("a", "b", "c");
List<String> list2 = Arrays.asList("b", "c", "d");
List<String> diff = list2.stream()
.filter(str -> list1.stream().noneMatch(str2 -> str.equals(str2)))
.collect(Collectors.toList());
System.out.println(diff); // 输出 [d]
```
上面的代码中,使用`noneMatch`方法来判断另一个List中是否存在当前元素。如果`noneMatch`方法返回`true`,说明另一个List中没有该元素,这样就可以将该元素添加到右差集中。
相关问题
java 计算两个List<String> 左差集 不要用contaions来进行比较
如果不想使用`contains`方法,可以使用Java8的Stream API中的`anyMatch`方法来实现。代码如下:
```java
List<String> list1 = Arrays.asList("a", "b", "c");
List<String> list2 = Arrays.asList("b", "c", "d");
List<String> diff = list1.stream()
.filter(str -> list2.stream().noneMatch(str2 -> str.equals(str2)))
.collect(Collectors.toList());
System.out.println(diff); // 输出 [a]
```
上面的代码中,使用`noneMatch`方法来判断另一个List中是否存在当前元素。如果`noneMatch`方法返回`true`,说明另一个List中没有该元素,这样就可以将该元素添加到左差集中。
java 计算两个List<String> 共同差集 不要用contaions来进行比较
如果不想使用`contains`方法,可以使用Java8的Stream API中的`anyMatch`方法来实现。代码如下:
```java
List<String> list1 = Arrays.asList("a", "b", "c");
List<String> list2 = Arrays.asList("b", "c", "d");
List<String> diff = list1.stream()
.filter(str -> list2.stream().noneMatch(str2 -> str.equals(str2)))
.collect(Collectors.toList());
diff.addAll(list2.stream()
.filter(str -> list1.stream().noneMatch(str2 -> str.equals(str2)))
.collect(Collectors.toList()));
System.out.println(diff); // 输出 [a, d]
```
上面的代码中,使用`noneMatch`方法来判断两个List中是否存在相同的元素。如果`noneMatch`方法返回`true`,说明两个List中没有相同的元素,这样就可以将该元素添加到共同差集中。