我有一个Contact
类,每个实例都有一个唯一的类contactId
。
public class Contact {
private Long contactId;
... other variables, getters, setters, etc ...
}
还有一个Log
类,它详细描述了action
某人Contact
在某个lastUpdated
日期的表演。
public class Log {
private Contact contact;
private Date lastUpdated;
private String action;
... other variables, getters, setters, etc ...
}
现在,在我的代码中,我List<Log>
可以包含一个的多个Log
实例Contact
。我想根据对象中的变量对列表进行筛选,以Log
使每个列表仅包含一个实例。结果列表应包含每个实例的最新实例。Contact``lastUpdated``Log``Log``Contact
我可以通过创建一个Map<Contact, List<Log>>
,然后循环访问并为每个Log
实例获取具有max
lastUpdated
变量的实例Contact
来做到这一点,但这似乎可以使用Java 8 Stream API简化得多。
使用Java 8 Stream API如何做到这一点?
您可以链接多个收集器以获得所需的内容:
import static java.util.stream.Collectors.*;
List<Log> list = ...
Map<Contact, Log> logs = list.stream()
.collect(groupingBy(Log::getContact,
collectingAndThen(maxBy(Comparator.comparing(Log::getLastUpdated)), Optional::get)));
问题内容: 我试图执行以下SQL查询并根据日期过滤出数据。 我需要显示一个表,该表过滤掉数据,使得仅那些提到的start_date和end_date之间的行 这是我一直在尝试的查询 我也从2012年获得了具有价值的结果。请帮帮我 谢谢 问题答案: 由于您没有提及任何错误(如果和是数据类型),因此查询没有任何问题。如果您没有获得正确的记录,请检查数据。 但是你的。您可以遵循一些好的做法来避免此类问题
问题内容: 我正在使用Elasticsearch 6.6,尝试根据在日期范围内传递给查询(Bool)的多个值(email_address)提取多个结果/记录。例如:我想根据他们的email_address(annie@test.com,charles@test.com,heman@test.com)以及时期(即project_date(2019-01-01))提取有关少数雇员的信息。 我确实使用了
问题内容: 我的服务器的CPU使用率异常高,我可以看到Apache使用了太多的内存。我有一种感觉,我被一个IP所包围-也许您可以帮助我找到他? 我使用以下行来查找10个最“活跃”的IP: 前5个IP对服务器的请求大约是“平均”用户的200倍。但是,我无法确定这5位访问者是否只是非常频繁的访问者,或者他们正在攻击服务器。 有没有办法将上述搜索指定到一个时间间隔,例如 最近两个小时还是今天的10到12
问题内容: 我想知道您的想法: 在会话期间,我必须获得与系统的所有连接。为了使这一过程自动化,我决定使用current_date%,因为current_date不是字符串,而是一个函数,因此该方法不起作用。 所以我的问题是,是否有人可以帮助我进行查询以获取当日所有连接的数量。 提前致谢! 我糟糕的代码: 问题答案: 最好的方法(从性能的角度来看)是使用如下逻辑: 并非所有数据库都支持日期的ISO
问题内容: 我有一个sql文件,其中包含以下数据,我将这些数据读入pandas中。 输出量 下一行代码是获取上周的日期 我所试图做的是,比较有并打印出所有行小于 显然,这会返回一个错误 我应该怎么做? 问题答案: 我会做一个面具,像: 如果为,则返回:
问题内容: 我有包含单列和两列的数据行。我要做的是提取仅包含2列的行。 仅产生: 请注意,它们是制表符分隔的,即使对于只有一列的行,您也可以在其开头使用制表符。 怎么做呢? 我尝试了这个但是失败了: 问题答案: 您需要使用(字段数)变量来控制操作,例如以下记录: 如果字段数为2,将打印该行,否则将不执行任何操作。我之所以具有(看似)奇怪的构造,是因为如果没有任何规则匹配一行,则默认情况下将打印的某