簡體   English   中英

使用java Stream獲取總和,平均值和排序

[英]using java Stream to get a sum, average, and sort

我正在學習java Stream,並且很難解決下面的問題。 我卡住的原因是因為我不知道處理Stream<Integer>

我通過list.stream().count()偶然發現了“count”的解決方案,但list.stream().count() ,我無法繼續前進。 請幫助我如何處理這些問題並告訴我為什么list.stream().count()在這種情況下工作。 到目前為止,我已經嘗試了所學到的一切。

public class Question {
    public static void main(String[] args) {
        List<Integer>list = Arrays.asList(5,3,4,1,2);
        System.out.println("sum by using Stream : " + sum);
        System.out.println("count by using Stream: " + count);
        System.out.println("average by using Stream : " + avg);
        System.out.println("sort by using Stream");
    }
}
IntSummaryStatistics stats = Arrays.asList(1,2,3,4)
    .stream()
    .mapToInt(Integer::intValue)
    .summaryStatistics();

stats.getSum();
stats.getCount();
stats.getAverage();

對於已排序,您將不得不再次流。

list.stream().count()工作原因但list.stream().sum()不是因為list.stream()返回Stream<Integer>並且有一個Stream::count方法,但是沒有Stream::sumStream::average

要首先獲得總和和平均值,您必須映射在將list.stream()傳遞給IntStream時獲得的Stream<Integer>中的每個整數值。 這是Stream的int原始特化。 這可以使用Stream::mapToInt方法完成:

list.stream().mapToInt(Integer::intValue)

這樣做你可以使用方法IntStream::sumIntStream::average

System.out.println("sum by using Stream : " + list.stream().mapToInt(Integer::intValue).sum());
System.out.println("average by using Stream : " + list.stream().mapToInt(Integer::intValue).average());

或者甚至更好,您可以使用IntStream::summaryStatistics來獲取總和,計數和平均值(也包括最小值和最大值):

System.out.println("sum, count, avg, min and max using Stream : " + list.stream().mapToInt(Integer::intValue).summaryStatistics());

要對值進行排序,可以使用Stream::sorted方法:

System.out.println("sort by using Stream: " + list.stream().sorted().collect(Collectors.toList()));

是一篇很好的文章,可以幫助您了解如何使用Java 8 Stream Api。

你可以這樣做:

List<Integer> list = Arrays.asList(5,3,4,1,2);
        System.out.println("sum by using Stream : " + list.stream().mapToInt(Integer::intValue).sum());
        System.out .println("count by using Stream: " + list.stream().mapToInt(Integer::intValue).count());
        System.out.println("average by using Stream : " + list.stream().mapToInt(Integer::intValue).average());
        System.out.println("sort by using Stream: " + list.stream().sorted().collect(Collectors.toList()));

您應該使用mapToIntmapToDouble

你可以通過forEach(System.out::println)打印列表forEach(System.out::println)

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

System.out.println("sum by using Stream : " + list.stream().mapToInt(Integer::intValue).sum());

System.out .println("count by using Stream: " + list.stream().count());

System.out.println("average by using Stream : " + list.stream().mapToInt(Integer::intValue).average());

System.out.println("sort by using Stream: " );

list.stream().sorted().forEach(System.out::println);

暫無
暫無

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

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