java获取两个list不一样的数据
时间: 2024-01-28 07:02:46 浏览: 117
假设你有两个包含字符串的列表 list1 和 list2,你可以使用 Java 8 中的 Stream API 和 Lambda 表达式来获取两个列表中不同的数据。代码示例如下:
```java
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> list1 = Arrays.asList("apple", "banana", "orange", "pear");
List<String> list2 = Arrays.asList("banana", "orange", "kiwi", "watermelon");
// 获取 list1 中不在 list2 中的数据
List<String> diff1 = list1.stream()
.filter(s -> !list2.contains(s))
.collect(Collectors.toList());
// 获取 list2 中不在 list1 中的数据
List<String> diff2 = list2.stream()
.filter(s -> !list1.contains(s))
.collect(Collectors.toList());
System.out.println("List1 中不在 List2 中的数据:" + diff1); // [apple, pear]
System.out.println("List2 中不在 List1 中的数据:" + diff2); // [kiwi, watermelon]
}
}
```
在上面的代码中,我们使用了 Java 8 中的 Stream API 和 Lambda 表达式来获取两个列表中不同的数据。对于第一个列表 list1,我们使用了 list1.stream() 方法将其转换为一个流(Stream)对象,然后使用 filter() 方法过滤掉 list2 中包含的元素,并使用 collect() 方法将结果收集到一个列表中。对于第二个列表 list2,我们使用同样的方式获取不在 list1 中的数据。最后,我们分别打印了两个列表的不同数据。
需要注意的是,上面的代码只能获取两个列表中不同的数据,如果你需要获取两个列表中相同的数据,可以使用 Java 的 List 的 retainAll() 方法,该方法会返回两个列表中相同的元素。
阅读全文