java代码比较两个list<T> 对象 得到相同数据和差异数据
时间: 2023-12-08 13:03:14 浏览: 38
可以使用Java 8的Stream API来比较两个List对象中的元素,以得到相同数据和差异数据。
假设我们有两个List对象,分别为list1和list2,它们都包含类型为T的元素。我们可以按照以下步骤来比较它们:
1. 找到相同的元素
使用stream()方法将List转换为Stream,然后使用filter()方法筛选出在list2中也存在的元素:
```
List<T> sameElements = list1.stream().filter(list2::contains).collect(Collectors.toList());
```
2. 找到不同的元素
使用stream()方法将List转换为Stream,然后使用filter()方法筛选出不在list2中的元素:
```
List<T> differentElements = list1.stream().filter(element -> !list2.contains(element)).collect(Collectors.toList());
```
完整代码示例:
```java
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class CompareLists {
public static void main(String[] args) {
List<String> list1 = Arrays.asList("A", "B", "C", "D");
List<String> list2 = Arrays.asList("B", "D", "E", "F");
// 找到相同的元素
List<String> sameElements = list1.stream().filter(list2::contains).collect(Collectors.toList());
System.out.println("相同的元素:" + sameElements);
// 找到不同的元素
List<String> differentElements = list1.stream().filter(element -> !list2.contains(element)).collect(Collectors.toList());
System.out.println("不同的元素:" + differentElements);
}
}
```
输出结果:
```
相同的元素:[B, D]
不同的元素:[A, C]
```