java - 列表项之间的差异

标签 java arraylist

我有两个列表ListOne 和ListTwo。 我必须找出 ListOne 中不存在于 ListTwo 中的所有元素。 相似地 我必须找出 ListTwo 中不存在于 ListOne 中的所有元素。

我的下面的代码可以正常工作,但我认为可能有更好的方法

        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);
        }
    }

最佳答案

作为 Lino 答案的替代方案,您还可以以函数方式重写代码:

List<Long> listOneButListTwoElements = listOne.stream()
        .filter(l-> !listTwo.contains(l))
        .collect(Collectors.toList());


List<Long> listTwoButListOneElements = listTwo.stream()
        .filter(l-> !listOne.contains(l))
        .collect(Collectors.toList());

关于java - 列表项之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47136874/

相关文章:

java - 用户输入到多维数组(列)

java - 使用带有 minimizeJar = true 的阴影时出现 NullPointerException

java - 来自 p :autoComplete 的 primefaces 更新面板

java - 数组类的空指针异常

java - 生成一个数字并检查它是否已经在 ArrayList 中

java - 如何按第二个词对列表进行排序?

java - Tomcat 连接池配置 : DataSource type and "Too many connection" error

java - 对 boolean 值使用 printf

Java - 带有数组列表的二进制文件 I/O

java - 删除ArrayList中的特定数字