当前位置: 首页 > 知识库问答 >
问题:

列表项之间的差异

闾丘文昌
2023-03-14
        List<Long> listOne=...Some valid values;
        List<Long> listTwo=...Some valid values;
        List<Long> listThree=new ArrayList<Long>();
        List<Long> listFour=new ArrayList<Long>();

    for (Long id: ListOne) {
        if(!listTwo.contains(id)){
            listThree.add(id);
        }
    }

    for (Long id: ListTwo) {
        if(!listOne.contains(id)){
            listFour.add(id);
        }
    }

共有1个答案

鞠边浩
2023-03-14

为了提高效率,您可以这样做:

Set<Long> setOne = new HashSet<>(listOne);
Set<Long> setTwo = new HashSet<>(listTwo);

List<Long> listThree = listOne.stream()
        .filter(e -> !setTwo.contains(e))
        .collect(Collectors.toList());
List<Long> listFour = listTwo.stream()
        .filter(e -> !setOne.contains(e))
        .collect(Collectors.toList());

这样就避免了m*n列表长度mn复杂度的问题。

编辑:如果您喜欢没有中间变量(正如@davidxxx所提到的),您可以这样做:

List<Long> listThree = listOne.stream()
        .filter(not(new HashSet(listTwo)::contains))
        .collect(Collectors.toList());
 类似资料:
  • 可能重复: 原始数组与ArrayList 在java中,列表和数组有什么区别?或数组和矢量之间的区别!

  • 我需要使用python找出两个列表之间的差异。这个问题以前在堆栈溢出上被问过很多次,但没有一个提到重复(即和之间的区别是;我需要它是,因为每个数字在我的程序中都很重要)。 我尝试过使用numpy的setdiff1d,但它无法满足上述标准 如上所述,这只说明同一项是否在列表中,而不是它在该列表中的次数。我还可以使用其他功能吗?

  • 问题内容: 我有两个列表,其中包含许多相同的项目,包括重复的项目。我想检查第一个列表中的哪些项不在第二个列表中。例如,我可能有一个这样的列表: 还有一个像这样的列表: 比较这两个列表,我想返回第三个列表,如下所示: 我目前正在使用一些我之前确定的糟糕代码,我可以肯定它甚至无法正常工作,如下所示。 我怎样才能更好地完成这项任务? 问题答案: 您没有指定订单是否重要。如果没有,则可以在> = Pyth

  • 问题内容: 我在Python中有两个列表,如下所示: 我需要用第一个列表中的项目创建第二个列表,而第二个列表中没有这些项目。从示例中,我必须得到: 有没有循环和检查的快速方法吗? 问题答案: 当心 你可能期望/希望它等于的位置。如果你想作为答案,则需要使用

  • 问题内容: 给定一个数字列表,人们如何发现第()个元素与其第()个元素之间的差异? 使用表达式还是列表理解更好? 例如: 给定一个列表,我们的目标是要找到一个列表,因为,等等。 问题答案:

  • 我想找出numpy数组中所有值之间的差异,并将其附加到一个新列表中。 也就是说,对于一个的每个值