import java.util.ArrayList;import java.util.List;import java.util.HashSet;import java.util.Set;public class ListComparison { public static void main(String[] args) { // 示例数据 List<String> list1 = new ArrayList<>(); list1.add("a"); list1.add("b"); list1.add("c"); list1.add("d"); List<String> list2 = new ArrayList<>(); list2.add("b"); list2.add("c"); list2.add("e"); list2.add("f"); // 找出新增的元素 Set<String> addedElements = new HashSet<>(list2); addedElements.removeAll(list1); // 找出删除的元素 Set<String> removedElements = new HashSet<>(list1); removedElements.removeAll(list2); // 打印结果 System.out.println("新增的元素: " + addedElements); System.out.println("删除的元素: " + removedElements); }}
代码解析初始化列表:
List<String> list1 = new ArrayList<>();List<String> list2 = new ArrayList<>();
添补列表:
list1.add("a");list1.add("b");list1.add("c");list1.add("d");list2.add("b");list2.add("c");list2.add("e");list2.add("f");
找出新增的元素:
Set<String> addedElements = new HashSet<>(list2);addedElements.removeAll(list1);
将 list2 转换为 HashSet 以便进行凑集操作。利用 removeAll 方法移除所有在 list1 中的元素,从而得到 list2 中有而 list1 中没有的元素。
找出删除的元素:Set<String> removedElements = new HashSet<>(list1);removedElements.removeAll(list2);
将 list1 转换为 HashSet 以便进行凑集操作。利用 removeAll 方法移除所有在 list2 中的元素,从而得到 list1 中有而 list2 中没有的元素。
System.out.println("新增的元素: " + addedElements);System.out.println("删除的元素: " + removedElements);
扩展
如果你须要比较更繁芜的工具列表而不仅仅是 String,你可能须要重写工具的 equals 和 hashCode 方法来确保工具的比较是基于实际内容而不是工具的引用。

如果你利用的是 Java 8 或更高版本,也可以利用 Stream API 来完成类似的任务:
import java.util.ArrayList;import java.util.List;import java.util.Set;import java.util.stream.Collectors;public class ListComparisonStream { public static void main(String[] args) { // 示例数据 List<String> list1 = new ArrayList<>(); list1.add("a"); list1.add("b"); list1.add("c"); list1.add("d"); List<String> list2 = new ArrayList<>(); list2.add("b"); list2.add("c"); list2.add("e"); list2.add("f"); // 找出新增的元素 Set<String> addedElements = list2.stream() .filter(element -> !list1.contains(element)) .collect(Collectors.toSet()); // 找出删除的元素 Set<String> removedElements = list1.stream() .filter(element -> !list2.contains(element)) .collect(Collectors.toSet()); // 打印结果 System.out.println("新增的元素: " + addedElements); System.out.println("删除的元素: " + removedElements); }}
这个示例利用了 Java 8 的 Stream API 进行元素过滤和凑集操作,代码更加简洁且易于理解。
总结以上是两种比较列表找出新增和删除元素的方法。你可以根据自己的需求选择适宜的方法来实现这项任务。希望这些示例能帮助你完成任务,如果有其他问题,随时提问!