Java8新特性之Stream流

Stream流

Stream流式编程

从JDK8开始,得益于Lambda所带来的函数式编程,引入了一个全新的Stream概念,用于简化已有集合类的数据操作,Stream流相当
于工厂里面的流水线,提供了丰富的API,方便对数据进行加工处理。

创建流的方式

方式1:根据集合获取

方式2:根据静态方法of获取流

public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(11);
        list.add(22);
        list.add(33);

        //创建流 根据集合获取流
        Stream<Integer> stream = list.stream();
        stream.forEach(integer -> System.out.println(integer));

        //使用静态方法of方法获取流
        Stream<Integer> stream1 = Stream.of(22, 11, 33);
    }

Stream常用方法

遍历

public static void main(String[] args) {
        Stream<Integer> stream = Stream.of(11, 22, 33);
        //方法引用
        stream.forEach(System.out::println);
    }
public static void main(String[] args) {
        Stream<Integer> stream = Stream.of(11, 22, 33);

        /*stream.filter(new Predicate<Integer>() {
            @Override
            public boolean test(Integer integer) {
                //返回值为true,当前数据就会保留到新的流中
                return integer%2==0;
            }
        });*/

        //过滤数据,得到符合条件的数据,放入新的Stream中
        stream.filter(a -> a%2==0).forEach(System.out::println);
    }
public static void main(String[] args) {
        Stream<Integer> stream = Stream.of(11, 22, 33);

        //截取出前两个
        stream.limit(2).forEach(System.out::println);
    }
public static void main(String[] args) {
        Stream<Integer> stream = Stream.of(11, 22, 33);

        //跳过
        stream.skip(1).forEach(System.out::println);
    }
public class Demo_concat {
    public static void main(String[] args) {
        Stream<String> stream1 = Stream.of("11", "22", "33");
        Stream<String> stream2 = Stream.of("44", "55", "66");

        //静态
        Stream<String> stream3 = Stream.concat(stream1, stream2);
        stream3.forEach(System.out::println);
    }
}
public class Demo_collect {
    public static void main(String[] args) {
        //流是生产线,不保存数据,只做加工
        //加工好的数据要保存,通常会把数据转进集合
        Stream<Integer> stream = Stream.of(11, 22, 33);

        List<Integer> list = stream.collect(Collectors.toList());

        Set<Integer> set = stream.collect(Collectors.toSet());

    }
}

Stream流的使用注意

1.一个Stream流对象只能操作一次

2.调用中间方法会返回新流,以便下次操作使用

3.终结方法如果没调用,中间方法也不会执行。

最后

如果你对本文有疑问,你可以在文章下方对我留言,敬请指正,对于每个留言我都会认真查看。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值