JDK1.8重温

拈花ヽ惹草 提交于 2019-12-17 18:47:59

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

1.8带来最核心的特性:

1.lambda(匿名函数)  基本上就是一个没有名称的方法,但和匿名类一样,它可以作为参数传递给一个方法。

       1.lambda表达式的三部分:参数列表,箭头->,方法体。

       2.使用场景: 只有在接受函数式接口(Compartor<T>,Runnable,Callable<V>等 以及1.8中function包中引入的几个新的函数式接口 Predicate<T>,Consumer<T>和Function<T,R>,Supplier<T>)上使用Lambda表达式。函数式接口的定义:只定义一个抽象方法的接口。

       允许直接使用内联的形式为函数式接口的抽象方法提供实现,把整个表达式作为函数式接口的实例

       List<Apple> greenApples = filter(inventory, (Apple a) -> "green".equals(a.getColor()));

       

          3.方法引用 方法引用可以重复使用现有的方法定义,并像lambda一样传递给它们。 

          inventory.sort((Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight()));

          inventory.sort(comparing(Apple::getWeight));

2.流式处理(Stream) 并行处理流元素,可以很好地利用多核处理器。

       

3.行为参数化(方法和lambda表达式作为一等公民,可以作为参数传递)  就是一个方法接受多个不同的行为作为参数,并在内部使用它们,完成不同行为的能力。

4.函数式编程  比如java8里面的Optional<T> 对空的处理

List<Apple> heavyApples1 = inventory.stream().filter((Apple a) -> a.getWeight() > 150) .collect(toList());

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!