- 博客(5)
- 收藏
- 关注
原创 函数式接口
函数式接口 1.1 函数式接口概述 函数式接口:有且仅有一个抽象方法的接口 Java中的函数式编程体现就是Lambda表达式,所以函数式接口就是可以适用于Lambda使用的 接口只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能顺利地进行推导 如何检测一个接口是不是函数式接口呢? @FunctionalInterface 放在接口定义的上方:如果接口是函数式接口,编译通过;如果不是,编译失败 注意 我们自己定义函数式接口的时候,@FunctionalInterface是可选的,就算我
2022-01-08 22:05:39 94
原创 接口组成更新
接口组成更新 1.1 接口组成更新概述 接口的组成 常量 public static final 抽象方法 public abstract 默认方法(Java 8) 静态方法(Java 8) 私有方法(Java 9) 1.2 接口中的默认方法 需求: 定义一个接口MyInterface,里面有两个抽象方法: void show1(); void show2(); 定义接口的两个实现类: MyInterfaceImplOne MyInterfaceIm
2022-01-08 22:04:42 180
原创 Lambda表达式
Lambda表达式 1.1 函数式编程思想概述 Functional Programming 在数学中,函数就是有输入量、输出量的一套计算方案,也就是“拿数据做操作” 面向对象思想强调“必须通过对象的形式来做事情" 函数式思想则尽量忽略面向对象的复杂语法:“强调做什么,而不是以什么形式去做” 而我们要学习的Lambda表达式就是函数式思想的体现 1.2 体验Lambda表达式 需求:启动一个线程,在控制台输出一句话:多线程程序启动了 方式一: 定义一个类MyRunnable实现Runnable接口,重写r
2022-01-08 22:03:47 51
原创 方法引用(Java)
方法引用 1.1 体验方法引用 在使用Lambda表达式的时候,我们实际上传递进去的代码就是一种解决方案:拿参数做操作 那么考虑一种情况:如果我们在Lambda中所指定的操作方案,已经有地方存在相同方案,那是否还有必要再写重复逻辑呢? 答案肯定是没有必要 那我们又是如何使用已经存在的方案的呢? 这就是我们要讲解的方法引用,我们是通过方法引用来使用已经存在的方案 需求: 定义一个接口(Printable):里面定义一个抽象方法:void printString(String s); 定义一个测试类(Pr
2022-01-08 00:22:43 80
原创 递归与递推
递归与递推 To Iterate is Human,to Recures,Divine 人理解迭代,神理解递归 阶梯问题 递归方法 空间复杂度:O(1) 时间复杂度:O(2^n) 分析: 空间复杂度:因为递归没有申请额外空间,所以为O(1) 时间复杂度:递归的次数以一个二叉树的形式增加,容易知道代码的时间复杂度和二叉树的节点个数有关,得到O(2^n) 递推方法 空间复杂度:O(1) 时间复杂度:O(n) 分析: 空间复杂度:因为递归没有申请额外空间,所以为O(1) 时间复杂度:只有一个for循环即可得
2022-01-02 18:01:42 500 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人