You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Stream API实现基于可空日期的唯一用户名统计功能?

Stream API重构日期过滤统计唯一用户实现

直接用Stream API的链式调用就能实现和原有代码完全一致的逻辑,重构后的代码如下:

public int getNumberOfUsers(Date after, Date before) {
    return (int) logRecords.stream()
            .filter(rec -> (after == null || rec.date.getTime() >= after.getTime()) 
                        && (before == null || rec.date.getTime() <= before.getTime()))
            .map(rec -> rec.user) // 如果LogRecord有getUser()方法,可替换为LogRecord::getUser
            .distinct()
            .count();
}

逻辑说明

  • stream()将logRecords集合转为流进行操作
  • filter中的判断逻辑和原代码完全一致:当after为空时不做起始日期限制,否则要求记录日期不早于after;当before为空时不做结束日期限制,否则要求记录日期不晚于before
  • map提取每条符合条件记录的用户名
  • distinct()自动对用户名去重,替代原代码中HashSet的去重功能
  • count()统计去重后的用户数量,转成int类型返回

内容的提问来源于stack exchange,提问作者Дмитрий Аронов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 05:15:39