- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个用户对象列表,定义如下:
public class User {
private String userId; // Unique identifier
private String name;
private String surname;
private String otherPersonalInfo;
private int versionNumber;
}
public User(String userId, String name, String surname, String otherPersonalInfo, int version) {
super();
this.name = name;
this.surname = surname;
this.otherPersonalInfo = otherPersonalInfo;
this.version = version;
}
}
示例列表:
List<User> users = Arrays.asList(
new User("JOHNSMITH", "John", "Smith", "Some info", 1),
new User("JOHNSMITH", "John", "Smith", "Updated info", 2),
new User("JOHNSMITH", "John", "Smith", "Latest info", 3),
new User("BOBDOE", "Bob", "Doe", "Personal info", 1),
new User("BOBDOE", "Bob", "Doe", "Latest info", 2)
);
我需要一种方法来过滤这个列表,以便我只为每个用户获取最新版本,即:
{"JOHNSMITH", "John", "Smith", "Latest info", 3},
{"BOBDOE", "Bob", "Doe", "Latest info", 2}
使用 Java8 Stream API 实现此目的的最佳方法是什么?
最佳答案
在 this answer 的帮助下:
Collection<User> latestVersions = users.stream()
.collect(Collectors.groupingBy(User::getUserId,
Collectors.collectingAndThen(Collectors.maxBy(Comparator.comparing(User::getVersionNumber)), Optional::get)))
.values();
我假设是通常的 setter/getter 。结果:
[John Smith Latest info 3, Bob Doe Latest info 2]
关于Java 流 : get latest version of user records,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42671078/
我刚刚遇到了一个关于 Gradle 依赖管理的小问题。 我知道我可以使用 latest.integration 声明依赖项引用快照或使用 latest.release从发布版本中引用工件。 我的问题是
还在这里学习gradle。寻找一种方法来获取给定范围的最新“任何内容”(快照/集成或发行)或必须发行的最新文件,例如[1.0,2.0]。有没有办法指定?在各处搜索,仅找到使用范围的引用(似乎不允许我限
我必须为许多文件检查一个文件的两个版本之间的差异。要获得黑白差异,我需要 dssc vhist,然后我必须检查最新版本和最后一个版本。然后我会得到版本的差异。它会消耗更多时间。以简单的方式处理这件事的
我有一个用于 PR 的 GitHub Action 工作流程,其中包含一个执行一些 NET Core 虚拟测试的作业,这些测试需要 PostgreSQL + SQL Serve 的实例。 工作定义:
例如,Facebook 加载最新的 X 条墙贴,然后如果用户向下滚动,它会加载后面的 X 条贴。 我可以看到您如何获得前 10 个最新的墙贴。像这样的东西: SELECT * FROM wall_po
我尝试使用以下命令提取 Fedora docker 镜像,但失败并出现 Tag latest not found in repository docker.io/library/fedora 错误:
我在德鲁伊有一张 table ,像 Timestamp || UserId || Action 而且我需要为每个 UserId 获取最新的 Action。在 MySQL 中我会做类似的事情 Selec
有人读过 Hickson 2010 年 5 月的 draft-hixie-thewebsocketprotocol-76 WebSocket 协议(protocol)吗? 这是 .htm 文件的来源:
我的构建过程生成了一个 docker 镜像。我希望用标签构建 ID 和“最新”来标记最新的构建镜像。我看到了两种方法。 第一种方法-(添加多个标签并推送一次) docker tag /:build_
我试图从缓冲区读取数据(而不是从文件中读取)以进行实时流式传输。在旧版本的 FFMPEG 中,使用 API“av_open_input_stream”支持它。但在 FFMPEG 版本 2.2.2 中,
编辑:其他容器正常运行。 docker run hello-world 工作正常。 我正在尝试运行最新的 nginx docker 镜像。它无限期地挂起。我已经在 2 个单独的全新安装的 ubuntu
我有一个基本模型,例如: class Stats(models.Model): created = models.DateTimeField(auto_now_add=True) grow
我需要调整以下 XPath 表达式以返回“最新”Amend_Start_Date来自示例 XML(来自 MS InfoPath): //my:Amend_Data[0=count(following-
go version go1.15.2 darwin/amd64 在我的文件夹中,我有两个文件:main.go和 user.go以及其他文件,例如 go.mod , go.sum等等。 尝试从 use
我正在尝试编译 Stygian 的 AzerothCore 重新包装,因为我想添加 Auction House Bot 模块。我已经安装并设置了 Docker,克隆了 repo 并安装了模块和补丁,但
我最近在进行代码审查(针对我的代码),一位架构师在我的 build.gradle 文件中看到了以下内容: dependencies { compile 'org.apache.commons:
我第一次尝试使用 go 模块。以下错误消息到底告诉我什么? module github.com/mkideal/cli@latest found (v0.2.2), but does not cont
我有一个如下的虚拟数据集,它是一个记录每个患者标本结果的数据集: case_id specimen_type_id virus_id specimen_result specime
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
在 Laravel 中,将最后一行记录到数据库表后,我可以通过调用 latest() 查询在记录后立即安全地访问相同的记录数据吗?因为其他用户的交易可能同时发生,而且可能不再是最后一条记录了? 编辑:
我是一名优秀的程序员,十分优秀!