Stream流

Stream流的介绍

               String流是jdk1.8的新特性,作用是方便操作集合和数组,可以多个操作连接起来。

如何获得Stream流对象

               Set集合获取Stream流对象方式和list集合获取的方式一样,双列集合要先获取单列集合才可以获取Stream流对象

 public static void main(String[] args){
        //创建一个集合
        List<Integer> list = List.of(1, 5, 6, 1, 2, 3);
        //集合对象.stream()   就获取Stream流对象了
        Stream<Integer> stream = list.stream();
    }

    

    数组获得Stream的方式

  //数组获得Stream流的方式是通过Stream的静态方法of来获得
        Stream<Integer> arr1 = Stream.of(42,356,89,89,756);

 

 Stream流常用方法介绍

Stream<T>  filter(Predicate<T>   predicate)根据条件过滤不符合条件的数据      延迟方法
long   count()获取流中元素的个数              终结方法
Stream<T>  limit(long  maxSize)获取前面maxSize个元素           延迟方法
Stream<T>  skip(long n)跳过前n个元素                           延迟方法
Stream<R>  map(Function<T,R>  mapper)将流中的元素从T类型转为R类型并保存在新的流中   延迟方法
void  forEach(Consumer<T>  con)逐一处理流中的数据             终结方法
static  <T>  Stream<T>  concat(Stream<T>  a,Stream<T>  b)把两个流的数据合并到一个流当中,那两个流就不能使用

        注意:调用了终结方法的流就不能在继续使用了,终结方法和延迟方法的区别,如果一个流东西调用了一个方法,返回值为一个流东西,那么那个方法就是延迟方法,返回值为其他的那么那个方法就是终结方法

          

   fiter方法使用


        List<Integer> list = List.of(1, 5, 6, 1, 2, 3);
        Stream<Integer> stream = list.stream();
    /*
     //使用匿名类部类  filter里面的参数为 Predicate的实现类
    Stream<Integer> stream1 = stream.filter(new Predicate<Integer>() {
            @Override
            //如果该方法返回true就表示这个数符合条件,就会把这个元素保存到返回值那个流里面
            public boolean test(Integer integer) {
                return integer>3;
            }
        });

        */
    //使用lambda表达式完成
        Stream<Integer> stream1 = stream.filter(e->e>5);

 

 map方法使用

  List<Integer> list = List.of(1, 5, 6, 1, 2, 3);
        Stream<Integer> stream = list.stream();
     /*
        匿名类部类实现
      // 使用map方法里面要哦传入一个Function函数接口的实现类,第一个泛型为你调用这个方法的Stream流的参数类型
        //第二个泛型为,你要把第一个参数转为什么类型
        Stream<String> stream1 =  stream.map(new Function<Integer, String>() {
            @Override
            public String apply(Integer integer) {
                //把int类型转为String类型如何返回,然后保存到一个新的流中
                return integer.toString();
            }
        });*/

     //lambda表达式实现
        Stream<String> stream1 =  stream.map(i->i.toString());

forEach方法使用

   List<Integer> list = List.of(1, 5, 6, 1, 2, 3);
        Stream<Integer> stream = list.stream();
       /* //使用匿名类部类实现   forEach方法里面要传入一个Consumer函数式接口的实现类,消费数据
        stream.forEach(new Consumer<Integer>() {
            @Override
            public void accept(Integer integer) {
                //forEach方法会把Stream流每一个元素传入这个方法
                System.out.println(integer);
            }
        });*/

     /*  //使用lambda表达式完成
        stream.forEach(i->{
            System.out.println(i);
        });*/

     //使用方法引用完成
        stream.forEach(System.out::println);

        

Stream流的分类

                串行流: 在当前线程中按顺序执行(不开线程)

                并行流:多个线程一起执行(开启多个线程一起执行)

 

 获取并行流方式      


        List<Integer> list = List.of(1, 5, 6, 1, 2, 3);
        
        //获取方式1:间接获取并行流
        Stream<Integer> stream = list.stream();
        //调用 stream的 parallel方法获取并行流
      Stream<Integer> stream1 =  stream.parallel();
        
      //获取方式二:直接获取  直接调用集合的 parallelStream方法获取并行流
        Stream<Integer> integerStream = list.parallelStream();

 

收集一个Stream流的数据,存储到list集合中


        List<Integer> list = List.of(1, 5, 6, 1, 2, 3);
        Stream<Integer> stream = list.stream();
        //如果要把流的数据存储到一个set集合就调用 Collection.toSet() 方法
      List<Integer> list1 =  stream.collect(Collectors.toList());

 

搜集一个Stream流的数据,存储到一个数组里面


        List<Integer> list = List.of(1, 5, 6, 1, 2, 3);
        Stream<Integer> stream = list.stream();
        //把Stream流的数据存储到一个指定类型的数组里面
        stream.toArray(Integer[]::new);
        

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值