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

如何使用Java Stream API合并Boat列表中所有Coordinate坐标集合

实现方案

完全可以实现,核心是使用Stream API的flatMap操作完成列表扁平化合并,示例代码如下:

import java.util.List;
import java.util.stream.Collectors;

// Java 16+ 版本写法
List<Coordinate> allCoordinates = placedBoats.stream()
        .flatMap(boat -> boat.getPosition().stream())
        .toList();

// Java 8 ~ Java 15 兼容写法
List<Coordinate> allCoordinates = placedBoats.stream()
        .flatMap(boat -> boat.getPosition().stream())
        .collect(Collectors.toList());

如果偏好方法引用的写法,也可以调整为:

import java.util.Collection;

List<Coordinate> allCoordinates = placedBoats.stream()
        .map(Boat::getPosition)
        .flatMap(Collection::stream)
        .toList();

逻辑说明

  • flatMap是Stream扁平化操作的核心方法,作用是把原始流中的每一个元素,映射为一个新的子流,再把所有子流拼接为一个完整的总流
  • 上述代码中,我们先把placedBoats转为Stream<Boat>,再通过flatMap把每个Boat的坐标集合转成Stream<Coordinate>,自动合并所有子流后,最终收集得到包含所有Boat坐标的总列表

如果后续需要对坐标做去重、过滤等操作,直接在flatMap之后追加对应方法即可,示例:

// 合并坐标且去重
List<Coordinate> distinctCoordinates = placedBoats.stream()
        .flatMap(boat -> boat.getPosition().stream())
        .distinct()
        .toList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:06:03