Java8--Stream

Stream简介

Stream与Collection集合的区别:Collection是一种静态的内存数据结构,而Stream是有关计算的。

  1. Stream不会存储元素
  2. Stream不会改变原对象,而会返回一个持有结果的新Stream
  3. Stream操作是延迟执行的,这意味他们会等到需要结果才执行

Stream的创建

方式一:通过集合创建Stream

List<String> s = Arrays.asList("a", "b", "c");
//stream() − 为集合创建串行流。
Stream<String> stream = s.stream();
//parallelStream() − 为集合创建并行流。
Stream<String> stream = s.parallelStream();

方式二:通过数组创建Stream

IntStream intStream = Arrays.stream(array);

方式三:通过Stream.of

Stream<Integer> integerStream = Stream.of(1,2,3);

筛选和切片

List<Integer> list = Stream.of(1,2,3,4,5,6,7,8,9,10,10).collect(Collectors.toList());
        //1.过滤filter,过滤出>5的
        list.stream().filter(item->item>5).forEach(System.out::println);

        //2.截断limit,取前6个
        list.stream().limit(6).forEach(System.out::println);

        //3.跳过skip,跳过前2
        list.stream().skip(2).forEach(System.out::println);

        //4.过滤重复元素
        list.stream().distinct().forEach(System.out::println);

映射

List<String> list =Stream.of("a","b","c").collect(Collectors.toList());

//1.映射map,将元素一一映射
list.stream().map(str->str.toUpperCase()).forEach(System.out::println);

排序

List<Integer> list = Stream.of(1,2,3,4,5,6,7,8,9,10,10).collect(Collectors.toList());
        
//排序,升序
list.stream().sorted().forEach(System.out::println);

统计

List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
 
IntSummaryStatistics stats = numbers.stream().mapToInt((x) -> x).summaryStatistics();
 
System.out.println("列表中最大的数 : " + stats.getMax());
System.out.println("列表中最小的数 : " + stats.getMin());
System.out.println("所有数之和 : " + stats.getSum());
System.out.println("平均数 : " + stats.getAverage());

终止操作

        List<Integer> list = Stream.of(1,2,3,4,5,6,7,8,9,10,10).collect(Collectors.toList());

        //判断是否所有数字都大于5
        boolean b1 = list.stream().allMatch(i->i>5);

        //判断是否存在有数字大于5
        boolean b2 = list.stream().anyMatch(i->i>5);

        //查找第一个数字
        Optional<Integer> first = list.stream().findFirst();

        //统计列表元素数量
        long count = list.stream().count();

        //查找当前流中的元素
        Optional<Integer> any = list.stream().findAny();

        //计算数的总和
        Integer reduce = list.stream().reduce(0, Integer::sum);

        //收集返回一个list
        List<Integer> collect = list.stream().collect(Collectors.toList());

        //收集返回一个set
        Set<Integer> collect1 = list.stream().collect(Collectors.toSet());


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值