前言:
Java8已经发布很久了,但是它的新特性想必也是鲜为人知。
//最简单的一句:
Arrays.asList( "刘备", "关羽", "张飞" ).forEach(System.out::println);
或则
Arrays.asList( "刘备", "关羽", "张飞" ).forEach(e -> System.out.println( e ) );
都可以输出结果如下:
毋庸置疑,Java 8是Java自Java 5发布之后的一个很重要的梯度型版本。这个版本主要是涵盖了库、工具、语言、JVM和编译器等方面的十多个新特性。这里我们就调其中的一个Lambda表达式作为一个切入点简单聊下:
正文:
1. 新建实体类Sanguo.java
Sanguo.java完整代码如下:
package com.yixin.hydra.test; import lombok.Data; import java.io.Serializable; /** * @package: com.yixin.hydra.test * @description: 三国实体类 * @author: IT讲坛 * @create: 2018-11-22 11:24 **/ @Data public class Sanguo implements Serializable { private static final long serialVersionUID = -4407341274877877134L; private String name; private int sex; private int age; public Sanguo(){ } public Sanguo(String name,int sex,int age){ this.name=name; this.age=age; this.sex=sex; } }
2. 新建测试类LambdaTest.java
完整的LambdaTest.java代码如下:
package com.yixin.hydra.test; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * @package: com.yixin.hydra.test * @description: lambda * @author: IT讲坛 * @create: 2018-11-22 11:18 **/ @Slf4j public class LambdaTest { public static void main(String []args){ // //最简单的一句: // Arrays.asList( "刘备", "关羽", "张飞" ).forEach(System.out::println); // // Arrays.asList( "刘备", "关羽", "张飞" ).forEach(e -> System.out.println( e ) ); //新建实体类 Sanguo sanguoLiu=new Sanguo("刘备",1,29); Sanguo sanguoGuan=new Sanguo("关羽",0,26); Sanguo sanguoFei=new Sanguo("张飞",1,22); //以前的遍历方式 List<Sanguo> sanguoList=new ArrayList<>(); sanguoList.add(sanguoFei); sanguoList.add(sanguoGuan); sanguoList.add(sanguoLiu); for (Sanguo sanguo:sanguoList) { log.info(JSONObject.toJSONString(sanguo)); } } }
输出结果:
运用了Lambda之后
//输出list里面全部的人物信息 sanguoList.forEach(sanguo-> { log.info(JSONObject.toJSONString(sanguo)); });
//输出年龄大于22的人物信息 sanguoList.stream().filter(sanguo -> sanguo.getAge()>22).forEach(sang -> { log.info(JSONObject.toJSONString(sang)); });
输出结果:
Java8还有很多新特性,比如java对Base64编码的支持已经加入到Java 8官方库里面,这样java开发者,就无需依赖第三方库就可以进行Base64的编解码。其他的新特性希望有兴趣的同学能够继续深入探讨,这里不做过多的讲解。
私信回复(学习)获取最新技术干货。每天都有更新。
本文暂时没有评论,来添加一个吧(●'◡'●)