JAVA1.8特性-Stream流

1 Stream简介

(1)Stream流是一种来自指定数据源的数据(引用类型,不支持基本类型)队列,具有内部迭代和延迟执行的特点,并支持数据流的并行操作;

(2)Stream进行元素遍历,对元素操作的代码通过lambda表达式传递,可以简化代码的编写;

2 Stream使用(集合和数组)

(1)Stream流获取

         1)数据源为集合的Stream流,直接通过集合的stream()方法获取Stream流;

List<String> list = new ArrayList<>();//定义集合
//集合赋值...
Stream<String> stream1 = list.stream();//获取集合数据流

         2)数据源为对象数组的Stream流,通过Steam类静态方法of(数组元素)

Integer[] arr = {1,2,3,4,4,5};//定义数组
Stream<Integer> arr1 = Stream.of(arr);//获取数据的Stream流

(2)Stream流常用方法

        1)Stream方法分类

              1)延迟方法:执行该方法后返回还是一个Stream对象,只是在原来流基础上获取一个新流,还没被使用(遍历);

              2)终结方法:执行该方法后返回不是Stream对象,流被使用(遍历),该流会被丢弃,不能在使用

        2)filter方法:用来过滤流中的数据产生一个新流

              1)参数:Predicate接口的实现,一般使用Lambda表达式进行传递

                              该接口中的方法定义了元素是否保留的判断规则;

              2)返回值:是一个Stream对象(延迟方法)

//Stream<T> filter(Predicate<? super T> predicate);
Stream<String> original = Stream.of("张无忌", "张三丰", "周芷若");
Stream<String> result = original.filter(s ‐> s.startsWith("张"));

        3)forEach方法:用来遍历流中的元素,对每个元素执行传递进来的操作方法

              1)参数:Consumer接口,接口中实现对每个元素的操作方法

              2)返回值:无返回值(终结方法)

//void forEach(Consumer<? super T> action)
Stream<String> stream = Stream.of("张无忌", "张三丰", "周芷若");
stream.forEach(name‐> System.out.println(name));

       4)skiplimit方法:skip用来跳过前n个元素生成流,limit用来获取前n个元素并生成流

            1) 参数:skip:要跳过的元素个数,limit:要保留的元素个数

            2)返回值:都是返回一个新Stream(延迟方法)

//Stream<T> skip(long n);
Stream<String> original = Stream.of("张无忌", "张三丰", "周芷若");
Stream<String> result = original.skip(2);

//Stream<T> limit(long maxSize);
Stream<String> original = Stream.of("张无忌", "张三丰", "周芷若");
Stream<String> result = original.limit(2);

      5)count方法:用来统计流遍历的元素总数,执行完count方法后,流被丢弃,不能再使用

          1)参数:无

          2)返回值:long 流所遍历的元素总数(终止方法)

//long count();
Stream<String> original = Stream.of("张无忌", "张三丰", "周芷若");
Stream<String> result = original.filter(s ‐> s.startsWith("张"));
System.out.println(result.count()); // 2

      6)map方法:将流中的元素按照指定规则进行转换

         1)参数:Function接口,接口中的方法指定如何对元素进行转换

         2)返回值:指定类型的新流(延迟方法)

//<R> Stream<R> map(Function<? super T, ? extends R> mapper);
Stream<String> original = Stream.of("10", "12", "18");//获取Stream流
Stream<Integer> result = original.map(str‐>Integer.parseInt(str));//将流中元素转为Integer

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值