Java 8新特性(Lambda,Stream API)
来源:互联网 发布:淘宝客服kpi考核内容 编辑:程序博客网 时间:2024/06/07 13:18
由于最近总监要求学习Java 8的一些知识,就去网上找了 一套教程来学习学习,将学习结果做一个小的总结记录,方便以后使用;
- Java 8的优点
- Lambda表达式优点
- Lambda实例
- 实例二
- 优化方法一策略设计模式
- 优化方式二匿名内部类
- 优化方式三Lambda表达式策略设计模式
- 优化方式四Stream API
主要内容:
- Lambda表达式
- 函数式接口
- 方法引用于构造器引用
- Stream API
- 接口中的默认方法与静态方法
- 新时间日期API
其中,最主要的部分为Lambda表达式与Stream API;
Java 8的优点
速度更快代码更少(增加了新的语法Lambda表达式)强大的Stream API便于并行最大化减少空指针异常(Optional)
哈希算法 数组-链表-红黑树
Java8中对HashMap的改变。(优先选择哈希表)
ConcurrentHashMap (并发级别:默认16个 concurrentLevel=16)
Java8中改为CAS算法
CAS算法比锁效率高,是底层操作系统支持的算法。
栈,堆,方法区。
方法区属于堆中永久区(PremGen)的一部分。
但是将方法区放置在堆区外。
方法区:加载类信息;几乎不会被垃圾回收机制回收;会被垃圾回收机制回收,但是回收条件比较苛刻。
JYM厂商很多种:Oracle-SUN、Hotspot、Oracle JRocket、IBM J9 JVM;
当方法区快满的时候,垃圾回收机制开始回收。
Java 8后,没有永久区了,改为MetaSpace元空间;其使用的为物理内存。
物理内存较大,垃圾回收机制使用的概率也变小。默认物理内存多大,元空间多大。
Java 8以前的JYM调优参数也改变了。
Lambda表达式优点
Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递);
可以写出更简洁、更灵活的代码。
作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。
使用Lambda表达式以后;
Lambda实例
需求:获取当前公司员工年龄大于35的员工信息;
首先;先创建一个Employee的类,里面包含属性name,age,salary,添加set、get方法,toString方法,
以及无参和有参构造函数;
输出:
实例二:
需求:获取当前公司中员工工资大于5000的员工信息
会发现以前的操作方法十分繁复冗余,那么可以通过哪些方式可以来优化代码呢?
优化方法一:策略设计模式
采用设计模式。 设计接口 ;
然后在类中实现该接口;
优化后的写法:
然后
输出:
如果想使用工资过滤,则新建类实现MyPredicate接口;
然后在测试类中编写代码;
输出:
缺点:每次实现一个策略,必须新建一个类;
优化方式二:匿名内部类
然后;
输出:
优化方式三:Lambda表达式,(策略设计模式)
Lambda表达式:
输出:
优化方式四:Stream API
输出:
学习总结自百度视频 《尚硅谷 Java 8新特性》
视频地址:
https://ke.qq.com/course/182668
- Java 8新特性(Lambda,Stream API)
- Java 8新特性:新语法方法引用和Lambda表达式及全新的Stream API
- Java 8新特性:全新的Stream API和lambda表达式
- Java 8新特性:Stream API
- Java 8新特性:Stream API
- Java 8新特性 Stream API 编程
- java 8 新特性(4.Stream API)
- Java 8新特性 Lambda、方法引用以及Stream
- Java8新特性Stream API与Lambda表达式详解(1)
- Java8新特性Stream API与Lambda表达式详解(2)
- Java 8新特性:全新的Stream API
- Java 8新特性:全新的Stream API
- Java 8 新特性——Stream API
- Java 8新特性: lambda
- JAVA 8 新特性 ---lambda
- Java 8 新特性 Lambda
- Java1.8新特性 Lambda/Stream/函数式编程
- java8 新特性入门 stream/lambda
- android studio中的错误transformClassesWithDexForDebug
- ES6-对象的扩展-_proto_ 属性,Object.setPrototypeOf(),Object.getProtitypeOf()
- 前端数据可视化插件(一)图表
- html标签
- 【Scikit-Learn 中文文档】使用 scikit-learn 介绍机器学习 | ApacheCN
- Java 8新特性(Lambda,Stream API)
- 内存大小端转换
- JAVA 使用反射获得继承类
- navicat中找回之前的执行语句
- 编程语言学习日志
- SpringBoot之日志记录 SLF4J(H)
- php搭建简单rpc(解决mongodb连接数的问题)
- CAP理论
- vSphere 5 HA 基础功能测试