如何使用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]}
您可以使用Stream
API并减少内部列表以获取其元素的总和。
演示:
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]
在线演示
你可以这样做:
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可以实现效果,实现比您现有的更加冗长: (请记住,返回的视图将延迟应用该函数- 如果要立即复制,则需要将返回的列表复制到新列表中。)