lambda高级进阶--组合函数
摘要:只有一个参数的函数可以将一个值转换成另一个值,如果你有2个这样的转换函数,那么在进行一个转换之后在进行第二个转换,其实也是一个中转换。 说到这里,先说一下我个人的一个习惯,我在写javaBean的set()方法时,一半都不是void类型,都是返回当前对象,这样子我在给这个对象设值的时候就可以一...
阅读全文
posted @
2015-11-23 14:51
LinkinPark
阅读(357)
推荐(0)
lambda高级进阶--返回函数
摘要:在函数式编程语言中,函数是一级公民。如同你可以将数字传递给方法,也可以让方法产生数字一样,函数不仅可以作为参数,也可以作为返回值。这听起来好像有点抽象,在JAVA编码中,我们好像也很少这样子写到,但是还是很有必要理解这种设计,特别是在1.8之后的java中。 现在来看下面的代码示例: publ...
阅读全文
posted @
2015-11-23 14:48
LinkinPark
阅读(431)
推荐(0)
lambda高级进阶--表达式参数
摘要:1,现在我们封装一个方法,来提供一个比较器,显然比较器是拥有两个参数的--用来比较的两个值。 public class Linkin{ public static String[] sort(String[] array) { Arrays.sort(array, (s, t) -> Int...
阅读全文
posted @
2015-11-23 14:47
LinkinPark
阅读(622)
推荐(0)
lambda高级进阶--延迟执行
摘要:前面的整理我们也已经说到了,使用lambda表达式的主要原因是,将代码的执行延迟到一个合适的时间点。在使用lambda表达式的时候务必记住一点就是说lambda表达式都是延迟执行的。 延迟执行代码的原因有很多,具体的如下。 1,在另外一个线程中运行代码 2,多次运行代码 3,在某个算法的正确时间...
阅读全文
posted @
2015-11-23 14:45
LinkinPark
阅读(1033)
推荐(1)
流API--原始类型流
摘要:到目前为止,我们已经将整型收集到了一个Stream的流中,不过将每个整数包装成相应对象显然是一个低效的做法,对于其他的基本类型也是一样,我们前面说过jdk提供包装类已经自动装箱和拆箱只是为了面向对象编程,我们不应该滥用。为此,流API提供了IntStream,LongStream,DoubleS...
阅读全文
posted @
2015-11-09 16:46
LinkinPark
阅读(560)
推荐(0)
流API--提取流+组合流
摘要:提取子流和组合流 1,limit(n)会返回一个包含n个元素的新流,如果原始流的长度小于n,则会返回原始的流。这个方法可用来裁剪指定长度的流。 2,skip(n)正好相反,它会丢弃掉前面的n个元素。 3,静态方法,concat()方法将2个流连接在一起。注意一点,第一个流的长度不应该是无限的,...
阅读全文
posted @
2015-11-09 16:44
LinkinPark
阅读(192)
推荐(0)
流API--缩减操作
摘要:在Stream流操作中,比如说min(),max(),count()方法,这几个操作都会将一个流缩减成一个值,流API将这些操作称为特例缩减。另外,流API同时泛华了缩减这种概念,提供了reduce()方法,通过使用reduce()方法,可以基于任意条件,从流中返回一个值。根据定义,所有缩减操作...
阅读全文
posted @
2015-11-09 16:42
LinkinPark
阅读(266)
推荐(0)
流API--分组和分片
摘要:分组和分片 对具有相同特性的值进行分组时一个很常见的任务,我们可以直接使用groupingBy来进行分组。 当分类函数是一个predicate函数时,流会被分成2组列表,一组返回true,一组返回false。 public class Test{ public static void main(...
阅读全文
posted @
2015-11-09 16:40
LinkinPark
阅读(552)
推荐(0)
流API--流的迭代
摘要:虽然流不是数据存储对象,但是仍然可以使用迭代器来遍历其元素,就如同使用迭代器遍历集合中的元素一样。 流API支持2类迭代器,一类是传统的Iterator,另一类是JDK8新增的Spliterator。 对流使用传统的迭代器 要获得流的迭代器,在流上调用interator()方法,然后调用h...
阅读全文
posted @
2015-11-09 16:35
LinkinPark
阅读(263)
推荐(0)
流API--流的收集
摘要:前面的一系列博客中,我们都是从一个集合中拿到一个流,但是有时候需要执行反操作,就是从流中获得集合。实际编码中,当我们处理完流后,我们通常想查看下结果,而不是将他们聚合成一个值。我们可以调用iterator方法来生成一个传统风格的迭代器,用于访问元素。 1,将流中的元素收集到一个数组中,调用t...
阅读全文
posted @
2015-11-09 16:33
LinkinPark
阅读(248)
推荐(0)
流API--流的映射
摘要:很多时候,将一个流的元素映射到另外一个流很有帮助。映射操作最具代表的就是map()方法。实际编码中,我们会经常用到,所以这里专门整理一篇博客。 考虑如下情景,对于一个包含了姓名,电话,年龄等属性构成的数据库的流,我们现在只想处理这个流中的姓名属性。或者是我们希望对流中一些元素做一些转换,比如只针...
阅读全文
posted @
2015-11-09 16:30
LinkinPark
阅读(320)
推荐(0)
流API--使用并行流
摘要:这篇博客一起来研究下使用并行流。借组多核处理器并行执行代码可以显著提高性能,但是并行编程可能十分复杂且容易出错,流API提供的好处之一是能够轻松可靠的并行执行一些操作。请求并行处理流,首先要获得一个并行流。 获取一个并行流有2个方法: 1,Collection定义的parallelStream(...
阅读全文
posted @
2015-11-09 16:27
LinkinPark
阅读(1966)
推荐(0)
流API--流的基础知识
摘要:流接口--BaseStream接口 流API定义了几个流接口,这些接口包含在java.util.stream中。BaseStream是基础接口,它定义了所有流都可以使用的基本功能。我们来看一下源码: public interface BaseStream> extends AutoClosea...
阅读全文
posted @
2015-11-09 16:24
LinkinPark
阅读(880)
推荐(0)
流API--初体验
摘要:在JDK8新增的许多功能中,有2个功能最重要,一个是Lambda表达式,一个是流API。Lambda表达式前面我已经整理过了,现在开始整理流API。首先应该如何定义流API中的“流”这个概念呢?记住:流是数据的渠道。 高中的时候我们就学过电流,水流,磁场流,然后java中还有io流,那么这个流...
阅读全文
posted @
2015-11-09 16:20
LinkinPark
阅读(282)
推荐(0)