如何用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
相关产品推荐
相关产品推荐

