簡體   English   中英

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

[英]Java 8 How to sum every elements in a list of a list using stream?

如何使用 Java 8 流對列表列表中的每個元素求和? 例如,我在一個列表中有 3 個不同的列表,我試圖對每個列表中的每個元素求和並創建另一個列表。 我是 Java 8 的新手,正在嘗試使用流 api 解決一些問題。 任何幫助將不勝感激!

List<List<Integer>> cases = [[1,1,2],[3,3,2],[4,5,1]];

我試圖實現的輸出:

{[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]

您可以使用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]

在線演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM