Java Stream API 提供了一种非常方便的方式来比较两个 List 的差异,并取出不同的对象。这可以通过使用 distinct() 和 filter() 方法来实现。
假设我们有两个 List,一个是 list1,另一个是 list2,我们想找出 list1 中存在但 list2 中不存在的元素。
以下是如何实现的示例代码:
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", "Cherry", "Date", "Elderberry");
List<String> list2 = Arrays.asList("Apple", "Banana", "Cherry", "Fig", "Grape");
List<String> diffList1 = list1.stream()
.filter(s -> !list2.contains(s))
.collect(Collectors.toList());
System.out.println("Difference in list1: " + diffList1);
}
}
在这个例子中,我们使用了 stream() 方法来创建一个从 list1 的元素到流的管道。然后,我们使用了 filter() 方法来过滤出 list2 中不存在的元素。最后,我们使用 collect() 方法将结果收集到一个新的 List 中。输出结果将是 list1 中存在但 list2 中不存在的元素。
如果你想找出 list2 中存在但 list1 中不存在的元素,只需将上述代码中的 list1 和 list2 交换即可:
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", "Cherry", "Date", "Elderberry");
List<String> list2 = Arrays.asList("Apple", "Banana", "Cherry", "Fig", "Grape");
List<String> diffList2 = list2.stream()
.filter(s -> !list1.contains(s))
.collect(Collectors.toList());
System.out.println("Difference in list2: " + diffList2);
}
}