当前位置: 首页 > 面试题库 >

如何使用Stream API Java 8一起打印两个列表?

姜振濂
2023-03-14
问题内容

我有以下两个列表

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),因为这是您要的功能



 类似资料:
  • 我现在的代码: 我希望它打印两个数组的交集,而不需要再次打印相同的数字。 E、 g:code>[1,2,2,1]和的交点应该只打印一次,而不是像我现在的代码那样。

  • 是否有一种方法可以只使用一条打印语句,但仍能达到与下面代码中相同的效果?我尝试了在这种情况下无法使用的结束语句,或者我使用了错误的结束语句:

  • 我用的是py。测试以运行测试。我将它与pytest xdist一起使用以并行运行测试。我想在测试中看到print语句的输出。 我有:Ubuntu 15.10,Python 2.7.10,pytest-2.9.1,plugy-0.3.1。 这是我的测试文件: 当我跑步的时候。测试时,没有打印任何内容。这是预期的:默认情况下,py。测试捕获输出。 当我跑步的时候。test-s,它会打印test_a和t

  • 问题内容: 我正在尝试创建一个包含2个列表并返回仅具有两个列表差异的列表的函数。 例: 结果应打印 到目前为止的功能: 第一个for循环将其排序,第二个将重复项删除。问题是结果 不是,所以不能完全删除重复项吗?我可以添加些什么来做到这一点。我不能使用任何特殊模块,.sort,set或其他任何东西,而只是基本地循环。 问题答案: 基本上,您希望将一个元素添加到新列表中(如果一个元素存在而另一个元素中

  • 我在这里拥有的是一组三个数组列表。一个包含姓名、姓氏、uid和学位方案的学生数组列表。然后,我还有一个模块列表,每个模块还包含一个学生ID数组列表,用于在该特定模块上注册的学生。 我要做的是将学生的数组列表与用户ID的数组列表链接起来,这样程序就会查看ID,并将它们与包含所有学生详细信息的列表进行比较,然后编写一份包含完整学生详细信息和他们注册的模块的合并报告。 我的数组列表设置得很好,但是我很难

  • 这里有两个数据帧: 预期数据帧: 以及实际数据帧: 现在两个数据帧之间的区别是: 我们使用的是except函数df1.except(df2),但问题是,它返回的是不同的整行。我们希望看到该行中哪些列不同(在本例中,“romin”和“romino”与“emp_name”不同)。我们在这方面遇到了巨大的困难,任何帮助都会很好。