当前位置: 首页 > 知识库问答 >
问题:

如何使用流对列表中的每个元素求和?

公冶兴文
2023-03-14

如何使用8流对列表中的每个元素Java求和?

例如,我在一个列表中有3个不同的列表,我试图对每个列表中的每个元素求和,然后创建另一个列表。我不熟悉Java 8,尝试使用流API解决一些问题:

List<List<Integer>> cases = Arrays.asList(
        Arrays.asList(1, 1, 2), 
        Arrays.asList(3, 3, 2), 
        Arrays.asList(4, 5, 1));

我正在努力实现的输出:

{[4,8,10]}

共有2个答案

米裕
2023-03-14

您可以使用StreamAPI并减少内部列表以获取其元素的总和。

演示:

import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<List<Integer>> cases = List.of(List.of(1, 1, 2), List.of(3, 3, 2), List.of(4, 5, 1));
        List<Integer> result = cases.stream()
                                    .map(e -> e.stream().reduce(0, Integer::sum))
                                    .collect(Collectors.toList());
        System.out.println(result);
    }
}

输出:

[4, 8, 10]

在线演示

舒飞捷
2023-03-14

你可以这样做:

List<List<Integer>> cases = Arrays.asList(Arrays.asList(1, 1, 2), Arrays.asList(3, 3, 2), Arrays.asList(4, 5, 1));

List<Integer> result = cases.stream()
        .map(list -> list.stream().mapToInt(Integer::intValue).sum())
        .collect(Collectors.toList());

System.out.println(result); // print [4, 8, 10]
 类似资料:
  • 问题内容: 在这里,我再次提出基本问题,但请耐心等待。 在Matlab中,将数字添加到列表中的元素非常简单: 然后是 在python中,这似乎不起作用,至少在列表上。 是否有一种简单的快速方法将单个数字加到整个列表中。 谢谢 问题答案: 如果要使用数字列表进行操作,最好使用NumPy数组: 给

  • 问题内容: 我有一个像这样的元组列表(总是成对出现): 我想找到每对中第一项的总和,即: 如何在Python中执行此操作?目前,我正在遍历列表: 我觉得必须有一种更Python化的方式。 问题答案: 与Python 2.3兼容的版本是 或在最新版本的Python中,请参见此答案。 也会做。

  • 问题内容: 我只想将一个列表中的每个元素除以一个int。 这是错误: 我了解为什么收到此错误。但是我为找不到解决方案感到沮丧。 还尝试了: 错误: 预期结果: 编辑: 以下代码给了我预期的结果: 但是,有没有更容易/更快的方法来做到这一点? 问题答案: 惯用的方式是使用列表理解: 或者,如果您需要保留对原始列表的引用:

  • 问题内容: 我有一个清单: 如何将每个元素乘以5?输出应为: 问题答案: 您可以只使用列表理解: 请注意,列表理解通常是执行循环的更有效方法: 作为替代方案,以下是使用流行的Pandas软件包的解决方案: 或者,如果您只想要列表:

  • 问题内容: 假设我有汽车清单: 如何缩短上面的代码?简而言之,如何在List的每个元素上调用方法? 例如,在Python中: 问题答案: 更新: 有关使用lambda表达式的Java8解决方案,请参见aaiezza的答案。 Java 8之前的原始答案: 使用Guava可以实现效果,实现比您现有的更加冗长: (请记住,返回的视图将延迟应用该函数- 如果要立即复制,则需要将返回的列表复制到新列表中。)