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

如何在Java中使用Streams替代forEach循环实现数据库查询加载

用Streams流改写代码的方案

步骤1:重构查询方法

先把原方法改成仅负责查询并返回结果的无副作用方法,去掉对外部集合的依赖:

private Load executeQuery(LocalDate date) {
    MapSqlParameterSource source = new MapSqlParameterSource();
    source.addValue("date", date.toString());
    return namedJdbcTemplate.queryForObject(Constants.SQL_QUERY, source,
            new BeanPropertyRowMapper<>(Load.class));
}

步骤2:用Streams处理集合

方案1:直接生成新集合(推荐,符合函数式风格)

通过流的map操作把每个日期转换为对应的Load对象,最后收集成新集合:

List<Load> loads = dates.stream()
        .map(this::executeQuery)
        .collect(Collectors.toList());

方案2:添加到已有集合

如果需要把结果追加到已存在的loads集合中,可使用forEach完成:

dates.stream()
        .map(this::executeQuery)
        .forEach(loads::add);

说明

  • 重构后的executeQuery职责更单一,只专注于查询逻辑,避免了操作外部集合的副作用
  • Streams写法省去了手动遍历和集合添加的样板代码,逻辑表达更直接清晰

内容的提问来源于stack exchange,提问作者sgsg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:40:33