
Java8
黑猴子的家
拥有技术,便拥有自由
B站 Up主专注于技术 https://space.bilibili.com/398602910
展开
-
黑猴子的家:Java 8 -> 类型推断
1、概念上述 Lambda 表达式中的参数类型都是由编译器推断得出的。Lambda 表达式中无需指定类型,程序依然可以编译,这是因为 javac 根据程序的上下文,在后台推断出了参数的类型。Lambda 表达式的类型依赖于上下文环境,是由编译器推断出来的。这就是所谓的“类型推断”。类型推断,因为它能猜出来,我们就没有必要写了,你写了,反而显得它很傻,它想告诉我们,它很聪...原创 2019-03-02 06:02:00 · 147 阅读 · 0 评论 -
黑猴子的家:Java 8 -> Stream 中间操作(排序)
1、概念多个中间操作可以连接起来形成一个流水线,除非流水线上触发终止操作,否则中间操作不会执行任何的处理!而在终止操作时一次性全部处理,称为“惰性求值”。2、排序3、sortpackage com.yinggu.demo11;import java.util.ArrayList;import java.util.Arrays;import java.util.List;...原创 2019-03-03 08:15:00 · 168 阅读 · 0 评论 -
黑猴子的家:Java 8 -> Stream 案例实操
1、创建 Stream方式一:通过集合Java8 中的 Collection 接口被扩展,提供了两个获取流的方法(1)default Stream<E> stream() : 返回一个顺序流(2)default Stream<E> parallelStream() : 返回一个并行流package com.yinggu.demo10;import java....原创 2019-03-03 08:15:00 · 135 阅读 · 0 评论 -
黑猴子的家:Java 8 -> Stream 中间操作(映射)
1、概念多个中间操作可以连接起来形成一个流水线,除非流水线上触发终止操作,否则中间操作不会执行任何的处理!而在终止操作时一次性全部处理,称为“惰性求值”。2、映射3、mappackage com.yinggu.demo11;import java.util.ArrayList;import java.util.Arrays;import java.util.List;...原创 2019-03-03 08:15:00 · 239 阅读 · 0 评论 -
黑猴子的家:Java 8 -> Optional
package com.yinggu.demo14;import java.util.Optional;import org.junit.Test;import com.yinggu.domain.Employee; * 此类用于演示Optional的特点和使用 作用: 为了解决空指针异常的问题 * 使用: 1、创建Optional对象 2、调用相关APIpublic class...原创 2019-03-03 08:16:00 · 127 阅读 · 0 评论 -
黑猴子的家:Java 8 -> Stream 终止操作
1、概念终端操作会从流的流水线生成结果。其结果可以是任何不是流的值,例如:List、Integer,甚至是 void 。 流进行了终止操作后,不能再次使用。2、匹配与查找codepackage com.yinggu.demo12;import java.util.Comparator;import java.util.List;import java.util.Opti...原创 2019-03-03 08:16:00 · 277 阅读 · 0 评论 -
黑猴子的家:Java 8 -> Stream 算子
图1图2原创 2019-03-03 08:16:00 · 272 阅读 · 0 评论 -
黑猴子的家:Java 8 -> Stream 终止操作(练习)
1、练习1给定一个数字列表,如何返回一个由每个数的平方构成的列表呢?例如,给定【1,2,3,4,5】, 应该返回【1,4,9,16,25】。package com.yinggu.demo13;import java.util.List;import java.util.Optional;import java.util.stream.Stream;import org.juni...原创 2019-03-03 08:16:00 · 330 阅读 · 0 评论 -
黑猴子的家:Java 8 -> Java 8 简述
code -> Java8-project -> githubhttps://github.com/liufengji/Java8-project.git1、本单元目标(1)JAVA8的引入(2)Lambda表达式的特点和使用 ★(3)函数式接口 ★(4)方法引用(5)构造器引用和数组引用(6)Stream API ★(7)Optional类的使用2...原创 2019-03-02 06:01:00 · 205 阅读 · 0 评论 -
黑猴子的家:Java 8 -> Lambda 表达式进阶
1、需求问题:针对员工的集合数据,有如下的一些需求,我们考虑如何完成?需求1:获取当前公司中员工年龄大于30的员工信息需求2:获取公司中工资大于 5000 的员工信息2、创建员工实体类 Employeepackage com.yinggu.domain; * @author 黑猴子的家 * http://www.121ugrow.com/public class ...原创 2019-03-02 06:01:00 · 211 阅读 · 0 评论 -
黑猴子的家:Java 8 -> Stream 中间操作(筛选与切片)
1、概念多个中间操作可以连接起来形成一个流水线,除非流水线上触发终止操作,否则中间操作不会执行任何的处理!而在终止操作时一次性全部处理,称为“惰性求值”。2、筛选与切片3、filterpackage com.yinggu.demo11;import java.util.ArrayList;import java.util.Arrays;import java.util....原创 2019-03-03 08:15:00 · 196 阅读 · 0 评论 -
黑猴子的家:Java 8 -> Stream 简述
1、概念Java8中有两大最为重要的改变。第一个是 Lambda 表达式;另外一个则是 Stream API。Stream API ( java.util.stream) 把真正的函数式编程风格引入到Java中。这是目前为止对Java类库最好的补充,因为Stream API可以极大提供Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。Stream 是 Java8 中处理集合...原创 2019-03-03 08:14:00 · 136 阅读 · 0 评论 -
黑猴子的家:Java 8 -> 构造器引用
1、概念格式:ClassName::new 与函数式接口相结合,自动与函数式接口中方法兼容。 可以把构造器引用赋值给定义的方法,要求构造器参数列表要与接口中抽象方法的参数列表一致!且方法的返回值即为构造器对应类的对象。2、样例Lambda表达式Function<Integer,MyClass> fun1 = n -> new MyClass(n);构造器引...原创 2019-03-03 08:14:00 · 154 阅读 · 0 评论 -
黑猴子的家:Java 8 -> Lambda 表达式语法
1、语法(o1,o2) -> o2.compareTo(o1)(e) -> e.getAge() > 30(参数名1,...)->{方法主体}注意(1)当只有一个参数时,可以省略小括号,如果有多个参数,需要加上小括号(2)方法体的语句需要用大括号包起来,但如果只有一句话,则可以省略大括号如果仅有的一句话还是return语句,则return 也可以省略...原创 2019-03-02 06:02:00 · 359 阅读 · 0 评论 -
黑猴子的家:Java 8 -> 函数式接口
1、什么是函数式(Functional)接口?(1)只包含一个抽象方法的接口,称为函数式接口(2)你可以通过 Lambda 表达式来创建该接口的对象。(若 Lambda 表达式抛出一个受检异常(即:非运行时异常),那么该异常需要在目标接口的抽象方法上进行声明)(3)我们可以在一个接口上使用 @FunctionalInterface 注解,这样做可以检查它是否是一个函数式接口。同时 ja...原创 2019-03-02 06:03:00 · 177 阅读 · 0 评论 -
黑猴子的家:Java 8 -> 阶段性练习一
1、练习题一调用Collections.sort()方法,通过定制排序,比较两个Employee(先按年龄比,年龄相同按姓名比),使用Lambda表达式作为参数传递。package com.yinggu.demo4;import java.util.Collections;import java.util.Comparator;import java.util.List;impo...原创 2019-03-02 06:03:00 · 375 阅读 · 0 评论 -
黑猴子的家:Java 8 -> 阶段性练习二
1、练习一创建日期MyDate类,里面有年、月、日属性,并对其进行合理封装 定义测试类,提供测试方法(要求用上Lambda表达式)测试方法一:比较两个日期大小package com.yinggu.demo6;import java.util.Comparator;import java.util.function.BiPredicate;import java.util.func...原创 2019-03-02 06:04:00 · 164 阅读 · 0 评论 -
黑猴子的家:Java 8 -> 阶段性测试
1、测试一有一个铃声接口类Bell,有一个方法sound,有一个手机类Cellphone,具有闹钟功能alarmclock,参数是Bell类型,测试手机类的闹钟功能,通过Lambda表达式作为参数,打印:懒猪起床了。interface Bell{ void sound();}class CellPhone{ public void alarmclock(Be...原创 2019-03-02 06:04:00 · 834 阅读 · 0 评论 -
黑猴子的家:Java 8 -> 方法引用入门
1、概念(1)当要传递给Lambda体的操作,已经有实现的方法了,可以使用方法引用!(2)方法引用就是Lambda表达式,就是函数式接口的一个实例,通过方法的名字来指向一个方法,可以认为是Lambda表达式的一个语法糖。(3)要求:实现抽象方法的参数列表和返回值类型,必须与方法引用的方法的参数列表和返回值类型保持一致!(4)方法引用:使用操作符 “::” 将类(或对象) 与 方法名...原创 2019-03-03 08:13:00 · 163 阅读 · 0 评论 -
黑猴子的家:Java 8 -> 数组引用
1、格式type[]::new2、小样//Lambda表达式Function<Integer,Integer[]> fun = (n) -> new Integer[n] ;//数组引用Function<Integer,Integer[]> fun = (n) -> Integer[]::new;3、案例package co...原创 2019-03-03 08:14:00 · 110 阅读 · 0 评论 -
黑猴子的家:Java 8 -> 方法引用练习
package com.yinggu.demo7;import org.junit.Test;* @author 黑猴子的家 * https://www.jianshu.com/u/37fd8e2dff4cpublic class TestMethodRef2 { @Test public void testA() { // 使用匿名...原创 2019-03-03 08:14:00 · 185 阅读 · 0 评论 -
黑猴子的家:Java 8 -> 方法引用进阶
1、test1-使用对象名,调用实例方法package com.yinggu.demo7;import java.util.Comparator;import java.util.function.BiPredicate;import java.util.function.Consumer;import java.util.function.Function;import org....原创 2019-03-03 08:14:00 · 132 阅读 · 0 评论 -
黑猴子的家:Java 8 -> Lambda 表达式入门
1、为什么使用 Lambda 表达式Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递),使用它可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。2、从匿名类到 Lambda 的转换1)匿名类Runnable r1 = new Runnable(){ @Overrid...原创 2019-03-02 06:01:00 · 144 阅读 · 0 评论