Java8 Stream流

Stream

1.数据源(集合,数组)
2.转换为流
3.通过一系列的操作(中间操作)
4.产生一个新流

如何转换为流

1. 通过Collections提供的Stream()和parallelStream()

List<String> list=new ArrayList<>();
Stream<String> stream1=list.stream();

2.Arrays中的静态方法获取数组流
Userandclass [] userandclasses=new Userandclass[10];
Stream stream2=Arrays.stream(userandclasses);
3.Stream类中的静态方法of()
Stream stream3=Stream.of(“aa”,“bb”);
4.创建无限流
Stream.iterate(0, (x) -> x + 2);

中间操作例子:

   List<Userandclass> userandclassList = Arrays.asList(
                new Userandclass((long) 1, (long) 1, (long) 1),
                new Userandclass((long) 2, (long) 2, (long) 2),
                new Userandclass((long) 3, (long) 3, (long) 3),
                new Userandclass((long) 4, (long) 4, (long) 4)
        );
        Stream<Userandclass> stream = userandclassList.stream()
                .filter((e) ->
                        e.getId() > 2
                );
        stream.forEach(System.out::println);

中间操作

1.筛选和切片
1.filter 筛选
2.limit(n) 截断 (取n个)
3.skip(n) 跳过(跳n个)
4.distinct 筛选(通过hashCode()和equals()去除重复元素)
//默认的equals()实际是判断两个引用是否指向内在中的同一个对象,相当于 ==
//当我们在使用形如HashMap, HashSet这样前面以Hash开头的集合类时,hashCode()就会被隐式调用以来创建哈希映射关系
2.映射
接收一个方法。
***例子:***map

 List<Long> configConditionIds = taskConfigProcessDtos.stream().map(item -> item.getConditionId()).collect(Collectors.toList());
 List<ConfigCondition> conditionbyIds = taskConfigProcessService.getConditionbyIds(configConditionIds);

***例子:***flatmap(将流中的每个值都转换成另一个流,然后把所有的流链接成一个流)
实际上把所有的流,整合成一个流。flat(平铺)
类似于add(Map),和addAll(flatMap)方法

终止操作

Stream.forEach(System.out::println)
注意:除非中间操作上触发终止操作,否则中间操作不会处理,而在结束的时候全部一次性处理,这叫做“惰性求值”。

  • forEach() 遍历每个元素
  • toArray() 转换为数组
  • min(Comparator) 取最小的元素
  • max(Comparator) 取最大的元素
  • count() 总数
  • findFirst() 第一个元素
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值