美文网首页
Java 8 流的创建

Java 8 流的创建

作者: xuanjiuye | 来源:发表于2019-11-04 11:43 被阅读0次

    集合作为Stream数据源

    List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
    Stream<Integer> stream = numbers.stream();
    Stream<Integer> integerStream = numbers.parallelStream();
    
    1. parallelStream 是多线程的,stream是单线程的,一般来说parallelStream 的效率会高点
    2. parallelStream 适用的场景是CPU密集型的,如果服务器CPU负载很高,你还随便用并行流,那并没有什么用,也不要在多线程中使用它,大家都来抢占CPU资源对提升效率没有帮助,反而会加大线程切换开销
    3. parallelStream 并不是线程安全的,使用的时候最好保证每条处理结果是无状态且独立 parallelStream
    4. 默认使用的common ForkJoinPool,如果其他功能也在使用这个池,可能导致程序其他部分阻塞,所以说用parallelStream 需要了解它的限制

    数组作为Stream数据源

    String[] str  = new  String[]{"1","2"};
    Stream<String> stream = Arrays.stream(str);
    

    使用Stream类创建数据源

    1. Stream.of()
    Stream<Integer> integerStream = Stream.of(1, 2, 3, 4, 5, 6);
    
    1. Stream.iterate()
    // 第一个参数是初始值、第二个参数决定下一个生成值的规则
            Stream.iterate(1,new UnaryOperator<Integer>(){
    
                @Override
                public Integer apply(Integer integer) {
                    return integer.intValue()+1;
                }
            }).limit(5).forEach(System.out::println);
    
    1. Stream.generate()
      // 生成100内的随机数
    Stream.generate(()-> Math.random() * 100).limit(5).forEach(System.out::println);
    
    1. Stream.build()
    Stream.<Integer>builder().add(1).add(2).build().forEach(System.out::println);
    

    相关文章

      网友评论

          本文标题:Java 8 流的创建

          本文链接:https://www.haomeiwen.com/subject/squrbctx.html