java - 将两个 List<Integer> 的每个元素求和到一个新列表中

标签 java java-8 java-stream

如何通过包含相同索引的值将两个列表合并为一个列表。
我有 2 个列表,我想通过包含相同索引的值合并两个列表。
(如果可能的话,请给我推荐java 8: Streams的方法。)

List<String> a = Arrays.asList("1", "2", "3");
List<String> b = Arrays.asList("10", "20", "30");

输出:

{"11", "22", "33"}

最佳答案

仅使用标准库的解决方案:

List<String> a = Arrays.asList("1", "2", "3");
List<String> b = Arrays.asList("10", "20", "30");

List<String> c = IntStream.range(0, a.size())
                          .map(i -> Integer.parseInt(a.get(i)) + Integer.parseInt(b.get(i)))
                          .mapToObj(Integer::toString)
                          .collect(Collectors.toList());

请注意,输入列表将数字存储为 String,如示例中指定的那样。另外,您可以将 map()mapToObj() 调用合并为一个 mapToObj() 调用,但为了清楚起见,我想将其分开.

它还假设两个列表的大小相同,如果不同,将抛出ArrayIndexOutOfBoundsException

关于java - 将两个 List<Integer> 的每个元素求和到一个新列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52932902/

相关文章:

java - 没有类型的 Lambda 表达式

java - 使用 Java Stream API 求减法总和

使用 JDK 8 在 Mac OS X El Capitan beta 3 上的 Eclipse 进程 sleep

java-8 - Java 8 Stream - 使用过滤器将元素添加到列表

java - 在 Java 8 中使用函数式接口(interface)作为 filter() 函数的参数

java - canvas 与 openGL 的功能是什么?

java - Hibernate - 如何使用整数列表?

lambda - 通过 DTO 进行 lambda 表达式的流传输

java - 双迭代器循环

java - 为什么当我使用 createBufferStrategy(3) 时会抛出非法参数异常?