如何使用Stream API Java 8一起打印两个列表?
问题内容:
我有以下两个列表
List<String> names = Arrays.asList("James","John","Fred");
List<Integer> ages = Arrays.asList(25,35,15);
我想要做的是像这样打印这两个列表
James:25
John:35
Fred:15
使用经典方式很容易做到
for(int i=0;i<names.size();i++){
System.out.println(names.get(i)+":"+ages.get(i));
}
有没有一种方法可以使用Stream API Java 8?
我能做的是只打印一个清单
names.stream().forEach(System.out::println);
问题答案:
最简单的方法是创建一个IntStream
来生成索引,然后将每个索引映射到String
您要创建的索引。
IntStream.range(0, Math.min(names.size(), ages.size()))
.mapToObj(i -> names.get(i)+":"+ages.get(i))
.forEach(System.out::println);
另外,您可能对这个SO问题感兴趣,使用带有lambda的JDK8压缩流(java.util.stream.Streams.zip),因为这是您要的功能。