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

如何用Java 8特性按顺序打印对应firstName:lastName:sal格式数据?

解决方案

首先明确:flatMap的作用是将多个流合并为一个扁平流,它会依次遍历每个子列表的全部元素,无法直接实现按索引对应位置组合的需求。但可以借助Java 8的IntStream特性完成该需求,具体实现如下:

基础实现代码

import java.util.List;
import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        List<String> firstName = List.of("Monika","Shweta", "Shruti","Anuradha");
        List<String> lastName = List.of("Mishra","Hariharno","Sharma","Mishra");
        List<Integer> sal = List.of(5000000,50,500,100000);

        // 通过索引流遍历并组合对应位置元素
        IntStream.range(0, firstName.size())
                .mapToObj(i -> String.format("%s:%s:%d", firstName.get(i), lastName.get(i), sal.get(i)))
                .forEach(System.out::println);
    }
}

代码说明

  • IntStream.range(0, firstName.size()):生成从0到列表长度-1的索引流,确保覆盖每个元素位置
  • mapToObj:将每个索引转换为指定格式的字符串,通过get(i)获取三个列表同索引位置的元素,用String.format拼接
  • forEach:输出每个拼接后的结果

基于finalList的实现

如果要基于你定义的finalList操作,也可以通过索引获取对应子列表的元素:

List<List<?>> finalList = List.of(firstName, lastName, sal);

IntStream.range(0, finalList.get(0).size())
        .mapToObj(i -> String.format("%s:%s:%d",
                finalList.get(0).get(i),
                finalList.get(1).get(i),
                finalList.get(2).get(i)))
        .forEach(System.out::println);

注意:这种方式要求所有子列表长度一致,否则会抛出IndexOutOfBoundsException。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 16:06:43