java 计算两个List<String> 右差集 不要用contaions来进行比较
时间: 2024-03-17 11:39:50 浏览: 57
如果不想使用`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> 共同差集
可以使用Java8的Stream API来计算两个List<String>的共同差集,代码如下:
```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.contains(str))
.collect(Collectors.toList());
diff.addAll(list2.stream()
.filter(str -> !list1.contains(str))
.collect(Collectors.toList()));
System.out.println(diff); // 输出 [a, d]
```
上面的代码首先使用`filter`方法过滤出`list1`中不包含在`list2`中的元素,然后使用`collect`方法将结果收集到一个新的List中。接着使用`filter`方法过滤出`list2`中不包含在`list1`中的元素,然后再次使用`collect`方法将结果添加到之前收集的List中,最终得到两个List的共同差集。
比较两个 List<String> 差集
要比较两个 `List<String>` 的差集,即找到在一个列表中存在而在另一个列表中不存在的元素,你可以使用`removeAll()`方法。这个方法会从一个列表中移除另一个列表中存在的所有元素。以下是一个示例代码:
```java
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> list1 = new ArrayList<>();
list1.add("apple");
list1.add("banana");
list1.add("orange");
List<String> list2 = new ArrayList<>();
list2.add("banana");
list2.add("orange");
list1.removeAll(list2);
System.out.println("列表1中差集元素: " + list1);
}
}
```
在上面的示例中,`list1`和`list2`是两个 `List<String>` 对象。通过调用`list1.removeAll(list2)`方法,将在`list2`中存在的所有元素从`list1`中移除,这样就得到了列表1中的差集。最终输出的结果将会是`[apple]`,表示在列表1中存在而在列表2中不存在的元素是"apple"。
请注意,这个方法会修改原始列表(即在列表1上进行操作),如果你不想修改原始列表,你可以先创建一个副本进行操作。例如:
```java
List<String> list1Copy = new ArrayList<>(list1);
list1Copy.removeAll(list2);
```
这样,`list1Copy`将会是列表1与列表2的差集,而列表1本身不会被修改。
阅读全文