java8核心之stream操作

本文介绍了Java8中Stream的操作,包括如何创建Stream、Stream的中间方法(filter、map、flatMap、distinct、sorted、peek、limit、skip)以及终结方法(forEach、toArray、reduce、collect、min、max、count、anyMatch、allMatch、noneMatch、findFirst、findAny)。Stream结合lambda表达式,可以高效地处理集合数据,执行过程中遵循链式操作和惰性求值的原则。
摘要由CSDN通过智能技术生成

java8可能是目前使用最为广泛的jdk版本。促使开发者升级的动力、以及不想升级更高等级的原因,无非是java8引入的优秀功能,其中一个便是stream。结合lambda表达式,stream可以简洁高效的处理集合数据。

创建stream

首先看一下如何创建一个stream对象

    List<String> list  = new ArrayList<>();
    // 创建单线程处理stream
	Stream<String> stream = list.stream();
	// 创建可以并行处理的stream,一般不用
	Stream<String> parallelStream = list.parallelStream();

对集合直接调用stream()方法即可。该方法执行完成后,我们便得到了一个Stream对象。

该方法是Collection.java接口中实现的默认方法。这样,所有的线性集合均可以创建Stream(Map并不支持直接创建Stream)。

	default Spliterator<E> spliterator() {
   
        return Spliterators.spliterator(this, 0);
    }

    default Stream<E> stream() {
   
        return StreamSupport.stream(spliterator(), false);
    }
    
    default Stream<E> parallelStream() {
   
        return StreamSupport.stream(spliterator(), true);
    }

Spliterator是java8引入的“可拆分迭代器”,类似Iterator,可以用来遍历集合。但是Spliterator可以用来并行遍历。具体实现以后再详细说明。

操作Stream中的元素

Stream创建结束。下面是对这个集合中的元素进行处理。Stream提供了多种处理方法,这些方法又分为以下两大类:

  • 中间方法:方法执行完成后会返回一个新的Stream对象,stream处理不会结束。常用中间方法为ffiltermapflatMapdistinctsortedpeeklimitskip等。

  • 终结方法:方法执行完成后会返回一个对象/集合/其他结果,调用终结方法意味着本次stream处理结束。常用的终结方法有forEachtoArrayredicecollectminmax

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值