Java 如何找到在两个列表之间产生差异的元素

Java 如何找到在两个列表之间产生差异的元素,java,Java,我需要创建一个通用方法,该方法接收两个列表并返回一个列表,其中包含使两个列表之间产生差异的元素 这就是我所尝试的: 以下是我的清单: List<String> list1 = new ArrayList<>(); list1.add("Real Madrid"); list1.add("Barcelona"); list1.add("Everton"); list1.add("Fulham"); list1.add("Sunder

我需要创建一个通用方法,该方法接收两个列表并返回一个列表,其中包含使两个列表之间产生差异的元素

这就是我所尝试的:

以下是我的清单:

 List<String> list1 = new ArrayList<>();
    list1.add("Real Madrid");
    list1.add("Barcelona");
    list1.add("Everton");
    list1.add("Fulham");
    list1.add("Sunderland");

    List<String> list2 = new ArrayList<>();
    list2.add("Real Madrid");
    list2.add("Barcelona");
    list2.add("Everton");
    list2.add("Fulham");
    list2.add("Partizan");
我得到的结果是:

[桑德兰]

但是,我需要的输出是:

[桑德兰游击队]

下面是我计算两个列表之间差异的代码:

public static <T> void difference(List<T> list1, List<T> list2) {
    Set<T> uniqueElementsInList1 = new HashSet<>(list1);
    Set<T> uniqueElementsInList2 = new HashSet<>(list2);
    uniqueElementsInList2.removeAll(uniqueElementsInList1);
    System.out.println(uniqueElementsInList2);
}
一些提示:

public static <T> void difference(List<T> list1, List<T> list2) {
那个方法的签名是无效的。你的文字说:应该返回一个列表。那么为什么不:

public static <T> List<T> difference(List<T> list1, List<T> list2) {
然后:

Set<String> ad = new HashSet<String>((Collection<? extends String>) list1);
有了通用的T,就不需要考虑字符串了:

Set<T> uniqueElementsInList1 = new HashSet<>(list1);
那你就快到了:

uniqueElementsInList1.removeAll(new HashSet<>(list2));
return new ArrayList<>(uniqueElements);

@好吧,那么请阅读并强化你的问题。除非你确切地告诉我们你的烦恼,否则我们帮不了你。如前所述:代码中的许多内容根本没有多大意义。@Johnez以哪种方式?你没有告诉我们你的问题是什么。我给了你很多关于如何找到有效解决方案的指导,很抱歉:现在我不知道你a从我们这里期望什么B你的实际问题是什么。@Johnez请用这些期望的结果更新问题。我不认为这是两个列表之间的区别。更像是两个列表的共同点。我认为列表中的差异会打印出3、4、5、6、7、8、9Hi,欢迎访问该站点。请在您的问题中添加您尝试过的输出以及它与您期望的输出有何不同。请参阅了解更多信息。欢迎使用堆栈溢出!澄清请求:您的问题是否已得到充分回答?如果是这样,请考虑一个答案。这样做有助于未来的读者确定问题是否得到解决,并对花时间回答你的人表示感谢。否则请提供反馈,以便人们可以进一步调整他们的答案。