如何使用java流比较两个ArrayList并通过过滤器获取list1

2023-12-02

我有两个类型为 List 的列表 list1 和 list2

Term{
long sId;
int rowNum;
long psid;
String name;
}

List<Term> list1 = new ArrayList<>();
List<Term> list2 = new ArrayList<>();

我想返回 list1 (list1.psid != list2.psid) 中的所有项目。

我尝试过,但它不起作用

public List<Term> getFilteredRowNum(List<Term> list1, List<Term> list2) {
        List<Long> psid = list2.stream().map(x -> x.getPsid()).collect(Collectors.toList());

        return list1.stream().filter(x -> !psid.contains(x.getPsid())).map(x -> x.getRowNum()+1).collect(Collectors.toList());

    }

我想获取list1中满足以下条件的所有记录 if(列表1.psid!=列表2.psid)

Sample Date:
List1: rowNum     psId    name    sid
       1         1288     home    101
       1         9012     home    101
       2         1296     office  150
       3         1290     park    161

List2: rowNum     psId    name    sid
       1          9012    home    101
       2         1296     office  150
       3         1290     park    161

List1 psId not in list2 so I am expecting fallowing list as result from list1

Expected: List1
 rowNum     psId    name    sid
 1         1288     home    101

你正在寻找内心的anyMatch在过滤谓词中为:

public List<Term> getFilteredRowNum(List<Term> termList1, List<Term> termList2) {
    return termList1.stream()
            .filter(term1 -> termList2.stream()
                    .anyMatch(term2 -> term1.getSId() == term2.getSId()
                            && term1.getPsid() != term2.getPsid()))
            .collect(Collectors.toList());
}

解决这个问题的另一种方法是创建一个Map of sid to a Set of psids 存在于任何列表中,使用groupingBy and mapping

Map<Long, Set<Long>> sIdToPsIdsMap = termList2.stream()
        .collect(Collectors.groupingBy(Term::getSId, 
                Collectors.mapping(Term::getPsid, Collectors.toSet())));

并进一步将其用于filter条件为

return termList1.stream()
        .filter(term1 -> sIdToPsIdsMap.containsKey(term1.getSId())
                && !sIdToPsIdsMap.get(term1.getSId()).contains(term1.getPsid()))
        .collect(Collectors.toList());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用java流比较两个ArrayList并通过过滤器获取list1 的相关文章

随机推荐

  • 如何在仅某些条件为 TRUE 的数组公式中包含 OR - Excel 第 2 部分

    这是这个的延伸question 回答者是XOR LX 在最初的问题中 我想计算矩阵中包含满足条件的值的行数最后一个特定于列的标准 引用的列是连续的 例如 A1 D4 但这种情况需要对不连续的列进行索引 取数据矩阵 A B C D E F G
  • 将当前Git分支设为master分支

    我在 Git 中有一个存储库 我创建了一个分支 然后对主分支和分支进行了一些更改 然后 数十次提交后 我意识到分支的状态比主分支好得多 所以我希望分支 成为 主分支并忽略主分支上的更改 我无法合并它 因为我不想将更改保留在 master 上
  • 在纯 JavaScript 中实现 setTimeout() 和 setInterval()

    我有一些支持在浏览器上运行的 JavaScript 基准测试代码 但我想在 JavaScript 引擎的控制台模式下运行它 例如 V8 中的 d8 以进行测试 我为每个 DOM 变量和函数编写了空变量和函数 例如document getEl
  • CSV 文件的 Blob 字符集

    我想使用 blob 创建一个 CSV 文件 该文件应该以 ANSI 编码 但它不起作用 var blob new Blob ufeff csvFile type text csv charset windows 1252 该文件始终使用 U
  • 什么是 zip(函数式编程?)

    我最近看到了一些 Clojure 或 Scala 抱歉我对它们不熟悉 它们确实压缩了一个列表或类似的东西 什么是 zip 它来自哪里 Zip 是指采用两个输入序列并生成一个输出序列 其中使用某个函数将输入序列中同一位置的每两个元素组合起来
  • 如何计算该程序在Python中执行了多少次?

    from itertools import permutations import random import pprint import timeit start time timeit default timer count 0 def
  • 我可以使用 Zoom.translateBy 设置初始平移吗?

    我有类似的东西 zoomable call d3 zoom scaleExtent 1 Infinity translateExtent 0 0 width height on zoom handleZoom 我似乎无法直接在缩放行为上调用
  • 使用 htmlspecialchars 函数与 PDO 准备和执行

    正在使用 PHP PDO 在表单验证和数据库查询中将特殊字符转换为 HTML 实体htmlspecialchars 功能真的有必要吗 例如 我有一个带有简单登录系统的网站 或多或少类似于 username string htmlspecia
  • 是否可以在量角器调试配置(WebStorm)中指定参数

    I m using Protractor in Webstorm and in order to use parameters in the terminal I can do protractor params url http www
  • 使用 Json.NET 序列化对象列表

    我有一个如下的对象模型 将从数据库检索的数据绑定到该模型 public class Student public virtual string serialNumber set get public virtual string stude
  • Visual Studio 代码:Paperscript

    抱歉我的英语水平 你知道任何扩展或其他东西来给 paperscript 代码着色吗 paperscript 色差示例 因为你的编辑器不认识text paperscriptMIMEtype 它不知道要应用什么语法突出显示 为了避免这种情况 最
  • 描述 Assembly 中的 pop [重复]

    这个问题在这里已经有答案了 我正在学习IA32 当我思考什么时popl DEST我认为指令正在做以下事情 movl esp DEST addl 4 esp 但当我想到popl esp 尽管这可能是一个毫无意义的指令 但我认为可能有更好的方法
  • 如何打印嵌入空值的字符串,以便用“(null)”替换“\0”

    我有一个使用 memcpy 组成的字符串 展开时 如下所示 char str AAAA x00 x00 x00 x11 x11 x11 x11 x00 x00 我想打印字符串中的每个字符 如果该字符为空 则打印出来 null 作为 0 的替
  • 带有全选复选框的可扩展列表视图:组项目单击和滚动错误

    我有一个 ExpandableListView 组名称旁边有一个复选框 展开时 子项目也带有复选框 假设我有 4 个组 有 50 个孩子 当展开一个组时 我单击全选复选框 一切正常 所有复选框都被选中 并在滚动时保持其状态 但是 如果我滚动
  • “ 远程服务器返回错误:(401) 未经授权”

    我正在尝试验证我的网址是否得到响应 换句话说 我正在尝试检查该网站的身份验证是否已成功 I used HTTP Request System Net WebRequest Create http example com HTTP Respo
  • 如何在 404 Tomcat 上重定向到外部网站

    我使用的是 spring 3 Tomcat 7 In web xml我已经定义了
  • TFS 构建定义未将 mvc 应用程序部署到 IIS

    我正在尝试使用 Visual Studio 的团队资源管理器和 TFS 创建构建定义以将 MVC 站点部署到 IIS 我遵循了名为 Team Foundation Server 2010 的持续部署 的 Pluralsight 教程 我从本
  • 使用 Java 从麦克风传输音频

    我正在开发一个项目 需要我将音频从客户端的麦克风流式传输到服务器 下面显示的代码是我写的 当我同时运行客户端和服务器代码时 音频不会实时传输 事实上 来自客户端的音频存储在缓冲区中 当我终止客户端代码的执行时 来自服务器缓冲区的音频将输出到
  • Java 不稳定的并发性

    好的 我刚刚读了这个问题你在 Java 中使用过 volatile 关键字吗 并且我使用易失性变量来停止循环 我也看过这个参考资料 http www javamex com tutorials synchronization volatil
  • 如何使用java流比较两个ArrayList并通过过滤器获取list1

    我有两个类型为 List 的列表 list1 和 list2 Term long sId int rowNum long psid String name List