SpringBoot系列(七):Java8的Stream API,让集合操作更为高效

摘要:本文我们将开个小插曲,分享介绍如何基于Java8提供的Stream特性,高效操作我们的集合,如List、Set、Map等等。其中,将主要介绍Stream特性提供的筛选过滤功能Filter、对象转化功能Map、去重Distinct、排序Sorted、最小值Min以及最大值Max等核心操作。

内容:了解过jdk动态的小伙伴们估计都知道,jdk已经出到12的版本了(是不是有点怀疑目前仍然还在使用jdk1.6、jdk1.5的自己),当然啦,我们都知道,不管jdk怎么升级,其底层核心数据库以及jvm的特性是变化不大的,特别是java8之后的版本,其主要还是以java8作为奠基进行一步步扩张的。如下图所示:

Java8对外提供的特性有很多,Stream便是其中的一大功能特性,除此之外,Java8还提供了接口默认方法、Lambda表达式、函数式接口等等。说起Java8的Stream,其在集合的操作中着实发挥了强大的作用,别的不说,其中的简洁、高效就特别令人眼前一亮。

Stream作为Java8的新特性,主要是基于lambda表达式,是对集合对象功能的增强,它专注于对集合对象进行各种高效、便利的聚合操作或者大批量的数据操作,可以提高编程的效率和代码可读性。

对于Stream的原理,正是其字面上的含义,Stream是将等待被处理的元素看做一种流,而流在管道中传输,并且可以在管道的节点上执行相应的处理操作,包括过滤筛选、去重、排序、聚合等等,元素流在管道中经过中间操作的处理,最后由最终操作如collect等方法得到前面处理的结果。

对于Stream的原理,各位小伙伴也可以网上搜索相应的文章进行深入的研究,在这里我们只做简单性的介绍。在后续的代码实战中,各位小伙伴可以看到上述对于Stream的原理将很好地在代码中得到体现。

值得一提的是,Stream API在执行的具体操作之前,需要先生成“流”,主要有两种方式:

(1)stream() − 为集合创建串行流

(2)parallelStream() - 为集合创建并行流

下面,我们在com.debug.springboot.server.dto目录下新建一个实体类PersonDto,用于后续的Stream代码实战中,其源代码如下所示:

@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
public class PersonDto implements Serializable{
    private Integer id;

    private Integer age;

    private String name;

}

其中,我们需要在该实体类中加入Equals()和HashCode()方法,用于后续执行Stream的去重API做铺垫!

另外,也需要在com.debug.springboot.server.utils 包目录下新建一个Java8Util类,用于介绍一些比较突出的Steam API操作。

更多请见:http://www.mark-to-win.com/tutorial/51037.html

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值