[英]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::sum
或Stream::average
。
要首先獲得總和和平均值,您必須映射在將list.stream()
傳遞給IntStream
時獲得的Stream<Integer>
中的每個整數值。 這是Stream的int原始特化。 這可以使用Stream::mapToInt
方法完成:
list.stream().mapToInt(Integer::intValue)
這樣做你可以使用方法IntStream::sum
和IntStream::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()));
您應該使用mapToInt
或mapToDouble
你可以通過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.