美文网首页
java8实战

java8实战

作者: sundern | 来源:发表于2018-09-02 14:23 被阅读8次

术语:

1.函数式编程:代码传递给方法的一整套编程技巧

看完本书能了解到的:

--stream

    --Stream API

    --IntStream/DoubleStream/LongStream

    --各种用流收集数据的应用(待充电):规约汇总、分组、分区、收集器接口

    --Stream并行

--代码传递

    --lambda

    --函数式接口、方法引用、构造方法引用(待充电)

    --各种复合:比较器复合、谓词复合、函数复合(待充电)

--Optional(待充电)

1.Stream API

筛选:filter(Class:isXXX())

消重:distinct()

截短:limit(2)

跳过:skip(2)

扁平化:map(Class:getXXX())--eg. map(String:length)

word = ["Hello","World"]

map(word->word.split("")) ~~~~~{[H,e,l,l,o],[W,o,r,l,d]} Stream

flatMap(word->word.split(""))~~~~~{H,e,l,l,o,W,o,r,l,d} Stream

至少一个匹配:anyMatch(Class:isXXX())

所有全部匹配:allMatch(Class:isXXX())

没有任何匹配:noneMatch(Class:isXXX())

返回任意元素:findAny()

返回第一元素:findFirst()

规约:reduce(0,Integer:sum)  =   reduce(0,(a,b) -> (a+b))

reduce(Integer:max) = reduce((x,y) -> x>y?x:y)

reduce(Integer:min) = reduce((x,y) - x

收集元素:collect(toList())

2.数值流

(1).Stream转化为IntStream:stream().mapToInt(Class:getXXX)

(2).IntStream转化为Stream:intStream.boxed()

(3).数值流操作:sum(),max(),rangClose(),range()

max()方法返回OptionalInt对象:因为无法区分默认值为0还是真的最大值为0

IntStream.rangeClose(1,100):1-100的100个数

IntStream.range(1,100):1-100不包括100的99个数

3.并行流

流的顺序化和并行化:sequential()/parallel(),同时出现多种时以最后一次为准

eg. Stream.iterate(1L,i -> i+1).limit(n).parallel().reduce(0L,Long:sum)

4.lambda

(1).使用:

a.定义接口:Runnable接口中有run方法

b.实现接口:使用lambda表达式实例化Runnable接口

Runnable r = () -> Sytem.out.println("Helle world");

c.传递接口并调用接口方法 :将r传递给需要的方法作为参数,实现中可调用r的run方法

process(Runnable r){ r.run ;}  process(r);

(2).常用的接口:(Comparator)

Predicate<T>(test):T->boolean

Consumer<T>(accept) T->void

Function<T,R>(apply) T->R

5.方法引用

(1).调用类的静态方法:ClassName::staticMethod

(args) - > ClassName.staticMethod(args)

(2).引用对象的方法,对象本身是lambda的参数,ClassName:: instanceMethod 比如String:length

(arg0,rest) - > arg.instanceMethod(rest)

(3)调用已经存在的外部对象的方法:expr::instanceMethod 比如 

() -> transaction.getValue() 写作 transaction::getValue

(args) -> expr.instanceMethod(args)



相关文章

网友评论

      本文标题:java8实战

      本文链接:https://www.haomeiwen.com/subject/svxmwftx.html