java8新特性StreamAPI(一)

###前言:

1.java8中最核心的改变应该当属Lambda表达式 和 全新的操作数组、集合的StreamAPI了
 它们功能强大,方便易用。
 前面已经学习了Lambda表达式了。今天就学习一下java8中操作数组和集合的全新API

###知识点一:StreamAPI简介:

####了解Stream

Java8中有两大最为重要的改变。第一个是 Lambda 表达式;另外一个则是 Stream API(java.util.stream.*)。

Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。

使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可以使用 Stream API 来并行执行操作。简而言之,

Stream API 提供了一种高效且易于使用的处理数据的方式。

####什么是 Stream

流(Stream) 到底是什么呢?
是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。
“集合讲的是数据,流讲的是计算!”

####注意:

①Stream 自己不会存储元素。
②Stream 不会改变源对象。相反,他们会返回一个持有结果的新Stream。
③Stream 操作是延迟执行的。这意味着他们会等到需要结果的时候才执行。

###知识点二:使用StreamAPI的步骤(三步走操作)

1.创建 Stream

	  一个数据源(如:集合、数组),获取一个流
  1. 中间操作

      一个中间操作链,对数据源的数据进行处理
    
  2. 终止操作(终端操作)

       一个终止操作,执行中间操作链,并产生结果
    

这里写图片描述

####步骤一:创建Stream的方式

#####方式一:由集合本身创建

说明:

Java8 中的 Collection 接口被扩展,提供了两个获取流的方法:
	
 default Stream<E> stream() : 返回一个顺序流
 default Stream<E> parallelStream() : 返回一个并行流

案例:

List<Stream> list = new ArrayList<>();

Stream<Stream> stream = list.stream(); //顺序流
Stream<Stream> streamStream = list.parallelStream();//并行流	

提示:collection接口新增默认方法:

这里写图片描述

#####方式二:由数组创建流

说明:

	java8中的Arrrays数组工具类中新增了Stream()方法,用于将数组转换流
	
	
    public static <T> Stream<T> stream(T[] array);
   
    public static <T> Stream<T> stream(T[] array, int startInclusive, int endExclusive);
   
  
    public static IntStream stream(int[] array) ;

    public static IntStream stream(int[] array, int startInclusive, int endExclusive);
 
    public static LongStream stream(long[] array);
   
    public static LongStream stream(long[] array, int startInclusive, int endExclusive) ;
    
    public static DoubleStream stream(double[] array) ;

 
    public static DoubleStream stream(double[] array, int startInclusive, int endExclusive) ;
    

实例:

        //通过Arrays中的Stream()方法,获取一个数组流:
	    int[] ints = new int[10];
        IntStream stream = Arrays.stream(ints);

####方式三:通过Stream类的静态方法 of创建;有具体的值或者对象创建
1.接口方法:

	
 public static<T> Stream<T> of(T t)
 public static<T> Stream<T> of(T... values)
 

2.案例:

   //将传入的1,2,3转换为流
  Stream<Integer> integerStream = Stream.of(1, 2, 3);

3.Stream方法定义:

这里写图片描述

####方式四:由函数创建流:创建无限流

1.说明:

1. 迭代流
     public static<T> Stream<T> iterate(final T seed, final
UnaryOperator<T> f)
2.生成流
     public static<T> Stream<T> generate(Supplier<T> s) : 

本人个人博客:https://elfgirl.top/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值