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

Java 8 Streams多条件过滤:能否用单个Lambda简化赛事结果筛选方法?

如何用单个Lambda简化finalResults方法?

当然可行!而且这样的代码会更简洁高效,不用额外创建中间列表,也不用两次遍历你的resultList。

先还原一下你原方法的完整逻辑(根据你给出的片段补充):

private Collection<FixtureResult> finalResults(Team team) {
    List<FixtureResult> finalResults = new ArrayList<>();
    List<FixtureResult> homeResults = resultList.stream()
        .filter(fixture -> fixture.getHome().equals(team))
        .collect(Collectors.toList());
    List<FixtureResult> awayResults = resultList.stream()
        .filter(fixture -> fixture.getAway().equals(team))
        .collect(Collectors.toList());
    finalResults.addAll(homeResults);
    finalResults.addAll(awayResults);
    return finalResults;
}

你只需要在filter中用一个Lambda表达式同时判断主队和客队是否匹配目标team,就能一次性完成筛选,直接收集结果返回:

private Collection<FixtureResult> finalResults(Team team) {
    return resultList.stream()
        // 单个Lambda同时覆盖主队和客队的匹配条件
        .filter(fixture -> fixture.getHome().equals(team) || fixture.getAway().equals(team))
        .collect(Collectors.toList());
}

这样做的好处:

  • 避免了两次遍历resultList,提升了性能
  • 不需要创建中间的homeResults和awayResults列表,减少了内存开销
  • 代码结构更紧凑,逻辑一目了然

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:19:05