Stream基础

stream流
java.util.stream.Stream是java8新加入的流接口
获取流非常的简单,由一下几种常用的方式
1. 创建操作

  • 可以通过collection系列提供的Stream()
		 List<String> list=new ArrayList<>();
       Stream<String> stream = list.stream();
  • 可以通过Arrays中静态方法stream()获取数组流
			Integer[] integers=new Integer[10];
        Stream<Integer> stream1 = Arrays.stream(integers);
  • 可以通过Stream类中的静态方法of创建流 这里of是可变参数
			Stream<String> stream2=Stream.of();
			Stream<String> stream2=Stream.of("aaa","bbbb");
  • 或者创建无限流
    1.用迭代器的方法
		Stream<Integer> stream3 = Stream.iterate(0, (x) -> x + 2);
		stream3.forEach(System.out::println);

2.用生成的方法

		Stream.generate(()->Math.random()).forEach(System.out::println);	

2.中间操作
就拿Employee类来举例子

List<Employee> emp = Arrays.asList(
            new Employee("张三", 18, 9999),
            new Employee("李四", 5, 7777),
            new Employee("王五", 45, 3333),
            new Employee("赵六", 38, 6666)
    );
	filter接收lambda 从流中排除某些元素。排除上边年龄大于30岁的人,但是只有下面的代码运行不出来,因为少了一个操作 终止操作(终端操作)
Stream<Employee> stream = emp.stream().filter(employee -> {
            System.out.println("Stream API中间建操作");
            return employee.getAge() > 30;
        });
把这些大于30岁的人给遍历出来  终止操作会把全部内容一次性执行完毕 所以称为 **惰性求值**
	stream.forEach(System.out::println);

limit截断流 使其不会超过指定数量
以上边的无限流做示例

		Stream<Integer> stream3 = Stream.iterate(0, (x) -> x + 2);
		stream3.limit(2).forEach(System.out::println);
	因为limit底层是 最大是几个 我把它限制为2Stream<T> limit(long maxSize);

skip(n)- 跳过元素 返回一个扔掉了前面n个元素的流 若流中的元素不足n 则返回一个空 与limit互补
意思是 limit截取6个Integer类型的数字 skip会把前两个给丢弃掉

Stream<Integer> stream3 = Stream.iterate(0, (x) -> x + 2);
		stream3.limit(6)
		.skip(2)
		.forEach(System.out::println);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值