Kin*_*nho 6 java java-8 java-stream
我正在学习java Stream,并且很难解决下面的问题.我被卡住的原因是因为我不知道如何处理Stream<Integer>.
我偶然发现了"计数"的解决方案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");
}
}
Run Code Online (Sandbox Code Playgroud)
Eug*_*ene 20
IntSummaryStatistics stats = Arrays.asList(1,2,3,4)
.stream()
.mapToInt(Integer::intValue)
.summaryStatistics();
stats.getSum();
stats.getCount();
stats.getAverage();
Run Code Online (Sandbox Code Playgroud)
对于已排序,您将不得不再次流.
之所以list.stream().count()有效但list.stream().sum()不是因为list.stream()返回a Stream<Integer>并且有Stream::count方法,但是没有Stream::sum或者Stream::average.
为了得到总和与AVG首先你要映射在每一个整数值Stream<Integer>,当你这样做,你会得到list.stream()一个IntStream.这是Stream的int原始特化.这可以使用以下Stream::mapToInt方法完成:
list.stream().mapToInt(Integer::intValue)
Run Code Online (Sandbox Code Playgroud)
这样做你可以使用方法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());
Run Code Online (Sandbox Code Playgroud)
或者甚至更好,您可以使用它IntStream::summaryStatistics来获得总和,计数和平均值(也包括最小值和最大值):
System.out.println("sum, count, avg, min and max using Stream : " + list.stream().mapToInt(Integer::intValue).summaryStatistics());
Run Code Online (Sandbox Code Playgroud)
要对值进行排序,您可以使用以下Stream::sorted方法:
System.out.println("sort by using Stream: " + list.stream().sorted().collect(Collectors.toList()));
Run Code Online (Sandbox Code Playgroud)
这是一篇很好的文章,可以帮助您了解如何使用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()));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3638 次 |
| 最近记录: |