Stream流

Stream流的创建

不同的数据类型,其创建stream流的方法不同,主要有以下四种类型:

数据类型创建方法
单列集合Collection中的默认方法stream()
双列集合无法直接使用stream(),需要先转换为单列集合
数组Arrays工具类中的静态方法Arrays.stream()
零散数据Stream接口中的静态方法Stream.of()

注意点:Stream.of()方法如下,其可以传一个可变长类型的参数,数组的底层本质也是一个可变长的数据,这就意味着我们也可以用Stream.of()来创建数组的stream流对象,但是要强调的是其只能传递一个引用类型的数组,传递基本类型的数据时,会把其整体看成是一个元素传入

public static<T> Stream<T> of(T... values) {
        return Arrays.stream(values);
    }

Stream中的中间方法

调用中间方法会返回一个新的Stream流,需要注意的是原来的Stream流只能使用一次,用完后不能再次使用,使用建议使用链式编程

方法说明
filter过滤
limit获取前几个元素
skip跳过前几个元素
distinct去重,利用equals和hashCode方法
concat静态方法,将a和b合并为一个流
map转换流中的数据

接下来为各个方法的使用示例

filter

输出大于等于5的元素

int[] arr={1,2,3,4,5,6,7,8,9};
Arrays.stream(arr)
      .filter(num-> num>=5)
      .forEach(num-> System.out.println(num));

运行结果
在这里插入图片描述

limit

输出前3个数

int[] arr={1,2,3,4,5,6,7,8,9};
        
Arrays.stream(arr)
     .limit(3)
     .forEach(num-> System.out.println(num));

运行结果
在这里插入图片描述

skip

跳过前三个元素

int[] arr={1,2,3,4,5,6,7,8,9};

Arrays.stream(arr)
      .skip(3)
      .forEach(num-> System.out.println(num));

运行结果
在这里插入图片描述

distinct

元素去重

int[] arr={1,1,1,2,2,3,4,5,5,6,7,8,9};

Arrays.stream(arr)
      .distinct()
      .forEach(num-> System.out.println(num));

运行结果
在这里插入图片描述

concat

合并流对象

String[] arr1={"张三","李四"};
String[] arr2={"王五"};
Stream.concat(Arrays.stream(arr1),Arrays.stream(arr2))
       .forEach(name-> System.out.println(name));

运行结果
在这里插入图片描述

map

转换流中的数据类型,例如把字符串中的年龄提取出来

String[] arr={"张三-18","李四-20"};
Arrays.stream(arr)
      .map(str->Integer.parseInt(str.split("-")[1]))
      .forEach(age-> System.out.println(age));

运行结果
在这里插入图片描述


终结方法

方法说明
forEach遍历
count统计个数
toArray转换为数组
toCollection转换为集合
  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值