Java8——Stream的基本用法

Stream用法和特点
stream是java8中处理集合的关键抽象概念,可对集合进行操作

特点:

无存储。Stream 不是一种数据结构,它只是某种数据源的一个视图,数据源可以是一 个数组,Java 容器或 I/O channel 等。

为函数式编程而生。对 Stream 的任何修改都不会修改背后的数据源,比如对 Stream 执行过滤操作并不会删除被过滤的元素,而是会产生一个不包含被过滤元素 的新 Stream。

惰式执行。Stream 上的操作并不会立即执行,只有等到用户真正需要结果的时候才会 执行。

可消费性。Stream 只能被“消费”一次,一旦遍历过就会失效,就像容器的迭代器那 样,想要再次遍历必须重新生成

总结
1.不是数据结构,不会储存数据
2.不会修改数据源,而是将操作的数据保存到另一个对象
3.惰性执行,操作不会立即执行,等用户真正需要结果才会执行

流的操作(创建、中间操作、最终操作)
创建:通过已有集合类的Stream或Stream的of方法
中间操作:过滤(filter)、转换(map)、排序(sort)、保留元素(limit/skip)、去重(distinct)
最终操作:collect(转换成集合)、count(计数)、forEach(遍历)

直接上代码

//创建一个Stream流
Stream<String> stream = Stream.of("张三", "","李四", "王五","");
//方法2
List<String> list = Arrays.asList("张三", "", "李四", "王五", "");
Stream<String> stream2 = list.stream();

//filter过滤字符串
//stream.filter(String ->!String.isEmpty()).forEach(System.out::println);

//collect 归约操作,可以接受各种做法作为参数,将流中的元素累积成一个汇总结果
List<String> asList = Arrays.asList("张三", "", "李四", "王五", "张三","王五Hello");
//输出开头带有 王五 的元素
asList = asList.stream().filter(string ->string.startsWith("王五")).collect(Collectors.toList());
System.out.println(asList);


//List<Integer> num = Arrays.asList(1, 1, 4, 4, 2, 2, 5, 5, 8);
//count 统计元素个数
//System.out.println(num.stream().count());

//映射每个元素对应的结果
//num.stream().map(i->i*i).forEach(System.out::println);

//获取前四个元素
//num.stream().limit(4).forEach(System.out::println);

//跳过前四个元素
//num.stream().skip(4).forEach(System.out::println);

//排序
//num.stream().sorted().forEach(System.out::println);

//去重
//num.stream().distinct().forEach(System.out::println);
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值