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

如何基于多个并行数组生成包含Stats对象的Stream流

解决方案

你原来的写法错误在于Stream.of(time, pace, rating, height, position)会生成一个包含5个数组对象的流,无法获取到不同数组相同索引的对应值。正确的做法是基于索引生成流,遍历每个下标,从五个数组中分别取出对应下标的值构建Stats对象。

注意事项

  • 必须保证所有数组长度一致,否则会出现数组越界异常,建议增加前置校验逻辑
  • 你当前代码里Stats构造方法要求的position类型是LatLon,但Trip类里的position数组是LatLng类型,需要先统一两个类型,或者补充类型转换逻辑,以下示例默认你已经处理了类型兼容问题

完整实现代码

public Stream<Stats> tripStats() {
    // 前置校验:所有属性数组长度一致,可根据需求调整异常类型
    int arrayLength = time.length;
    if (pace.length != arrayLength || rating.length != arrayLength || height.length != arrayLength || position.length != arrayLength) {
        throw new IllegalArgumentException("所有属性数组的长度必须保持一致");
    }
    
    // 生成索引流,逐个下标取数构建Stats对象
    return IntStream.range(0, arrayLength)
            .mapToObj(index -> new Stats(
                time[index],
                pace[index],
                rating[index],
                height[index],
                position[index] // 若类型不匹配,此处补充转换逻辑即可,比如position[index].convertToLatLon()
            ));
}

代码说明

  • IntStream.range(0, arrayLength)会生成从0到arrayLength-1的连续整数流,刚好对应所有数组的合法下标
  • mapToObj方法会把每个下标转换为对应的Stats对象,最终返回的就是符合要求的Stream<Stats>类型结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 13:30:00