
Java8
h294590501
这个作者很懒,什么都没留下…
展开
-
Lambda表达式
Lambda表达式什么是λ表达式面向对象过分强调“必须通过对象的形式来做事情”,于是经常看到这样的写法:如果你想写一个方法,那么就必须把它放到一个类里面,然后new出来对象,对象调用这个方法。这种方式在函数式编程语言看来太死板。Lambda表达式即函数式编程,在数学中,函数就是有输入量、输出量的一套计算方案,也就是“拿什么东西做什么事情”。函数式编程思想则尽量忽略面向对象的复杂语...原创 2018-05-12 12:51:38 · 201 阅读 · 0 评论 -
收集 Stream 结果
收集 Stream 结果集合和流虽然具有一些相似性,但有不同的目标。集合主要是对其中的元素进行管理和访问。而流不提供直接访问或操纵其元素的功能,//流的出现只是对集合中的元素进行声明性地描述或对元素进行计算等操作。//而且流只能进行一次操作,即调用非终结方法或终结方法操作一次。所以对流操作完成之后,有时需要将其结果进行收集,获取对应的集合、数组等。收集到集合中Stre...原创 2018-05-14 23:11:51 · 468 阅读 · 0 评论 -
Stream 流
Stream 流说到 Stream 便容易想到 I/O Stream,而实际上,谁规定“流”就一定是“IO 流”呢?在 Java 8 中,得益于Lambda 所带来的函数式编程,引入了一个全新的 Stream 概念,用于解决已有集合类库既有的弊端。Stream 流引入案例 案例需求:• 有如下集合List<String> list = new ArrayList<&...原创 2018-05-14 23:10:12 · 729 阅读 · 0 评论 -
方法引用
方法引用在使用 Lambda 表达式的时候,我们实际上传递进去的代码就是一种解决方案: 拿什么参数做什么操作。那么考虑一种情况: 如果我们在 Lambda 中所指定的操作方案,已经有地方存在相同方案,那是否还有必要再写重复的功能代码?什么是方法引用方法引用就是一个 Lambda 表...原创 2018-05-13 22:32:38 · 1891 阅读 · 4 评论 -
接口默认方法
接口默认方法JDK8 中为什么有接口默认方法以前创建了一个接口,并且已经被大量的类实现。如果需要再扩充这个接口的功能加新的方法,就会导致所有已经实现的子类需要重写这个方法。如果在接口中使用默认方法就不会有这个问题。所以从 JDK8 开始新加了接口默认方法,便于接口的扩展。接口中默认方法的规则1.默认方法使用 default 关键字,一个接口中可以有多个默认方法。2.接口中既可以定义抽象方法...原创 2018-05-13 22:29:32 · 18924 阅读 · 0 评论 -
常用函数式接口
常用函数式接口JDK 8 中重要的函数接口接口 参数 返回 中文 示例Supplier None T 提供者 工厂方法创建对象Consumer T void 消费者 输出一个值Predicate T boolean 谓语,顾名思义,中文中的‘是’与‘不是’是中文语法的谓语Function T R 函数 获得某个对象...原创 2018-05-13 22:27:34 · 5234 阅读 · 1 评论 -
函数式接口
函数式接口在 Java 中,当接口中只有一个抽象方法时,该接口就称为函数式接口。函数式接口,即适用于函数式编程场景的接口。而 Java 中的函数式编程就是 Lambda,即函数式接口就是可以适用于 Lambda 使用的接口。接口中只有一个抽象方法时,Java 中的 Lambda 才能顺利地进行类型的推导。函数式接口都是先使用 Lambda 接口实现方法体,再调用接口中的方法...原创 2018-05-12 13:19:37 · 1447 阅读 · 0 评论 -
Lambda 的延迟执行
Lambda 的延迟执行使用 Lambda 表达式的主要原因是:将代码的执行延迟到一个合适的时间点,即调用的时候。所有的 Lambda 表达式都是延迟执行的。因为匿名内部类的方法都是要等到调用的时候才会执行。延迟执行的基本案例:案例需求:1) 创建一个 Person 接口,有一个 sayHi()的无参无返回值的方法。2) 在 main 函数中直接实例化 Person 为 p1 对象,并...原创 2018-05-12 13:13:16 · 3177 阅读 · 0 评论 -
Lambda作为方法的一部分
Lambda作为方法的参数需求说明假设有一个Person类,含有String name和int age两个成员变量。创建对象数组,存储多个Person对象,然后对该数组的Person进行排序:按照年龄从小到大。数据如下:new Person("古力娜扎", 19),new Person("迪丽热巴", 18),new Person("马尔扎哈", 20)传统写法如果使用传统的代码对Person[]...原创 2018-05-12 12:54:07 · 329 阅读 · 0 评论 -
并行流
并行流串行流的操作是在单线程上执行的,而并行流的操作是在多线程上并行执行的。所以并行流的执行效率会更高,它是由多个线程同时操作一个流对象。Collection接口两个默认方法说明Stream stream()得到一个串行流Stream parallelStream()得到一个并行流这两个方法都是返回Stream对象,说明它们在功能的使用上是没差别的。唯一的差别就是流内部处理的时候一个是单线程处理和...原创 2018-05-14 23:12:42 · 639 阅读 · 0 评论