Java8中Stream简单使用整理

Stream 流

流可以让人以一种声明的方式处理数据,流在管道中传输,并且可以在管道的节点上进行处理,筛选、排序、聚合等。
元素在管道中经过中间操作处理,最后由最红操作得到前面处理的结果。
流是一个来自数据源的元素列表并指出聚合操作。

1.生成流

  • stream():为集合创建串行流
  • parallelStream():为集合创建并行流

2、foreach

stream可以用foreach来迭代流中的数据

List<Integer> list = Arrays.asList(1, 2, 3);
list.forEach(System.out::println);

3、map

map 用于映射每个元素到对应的结果

List<Integer> num = Arrays.asList(1, 2, 4, 5);
List<Integer> numm = num.Stream().map(m -> m*m).collect(Colloctors.toList());

4、filter

filter 用于通过设置条件过滤出元素

List<String> strList= Arrays.asList("a", "", "c", "v");
List<String> list = strList.Stream().filter(s -> !s.isEmpty()).collect(Colloctors.toList());

5、limit & skip

limit 用于获取指定数量的流
skip 跳过元素返回一个抛弃了前几个元素的流,若流中蒜素不满足n个,则返回空流 与limit互补

List<String> strList= Arrays.asList("a", "", "c", "v");
List<String> list = strList.Stream().filter(s -> !s.isEmpty()).limit(2).collect(Colloctors.toList());

6、sorted

sorted 用于对流进行排序

7、collectors

collectors 实现了归约操作,eg:将流转换成集合
collectors 可用于返回列表或字符串

List<String> strList= Arrays.asList("a", "", "c", "v");
List<String> list = strList.Stream().filter(s -> !s.isEmpty()).limit(2).collect(Colloctors.toList());

8、统计

有一些产生统计结果的收集器,主要用于 int、double、long 等基本类型

List<Integer> nums = Arrays.asList(1, 2, 3, 4);
IntSummaryStatistics statistics = nums.stream().mapToInt(x -> x * 2).summaryStatistics();
System.out.println(statistics);

9、distinct

distinct 筛选通过流所生成元素的hashCode() 和equals()去除重复元素
ps:自定义实体的蛆虫需要重写两个方法

10、reduce

reduce 归约,可以将流中元素反复结合起来得到一个值,返回T,eg:求和

 List<Integer> list = Arrays.asList(2, 4, 6, 9);  
 Integer reduce =  list.stream().reduce(0, (x, y) -> x + y);

11、count

count 可以返回流中元素的总数

猜你喜欢

转载自blog.csdn.net/weixin_43648994/article/details/95965047