美文网首页
Java 8 新特性:函数式编程

Java 8 新特性:函数式编程

作者: 程序员大耳 | 来源:发表于2019-11-14 17:37 被阅读0次

Java 8 新特性:函数式编程

一、是什么?

首先需要清楚一个概念:函数式接口;

它指的是有且只有一个未实现的方法的接口,一般通过FunctionalInterface这个注解来表明某个接口是一个函数式接口。

函数式接口是Java支持函数式编程的基础。

Java8新引入函数式编程方式,大大的提高了编码效率。

二、有哪些Java函数式接口(最基本)?

1、Consumer(BiConsumer)

Consumer是一个函数式编程接口;

顾名思义,Consumer的意思就是消费,即针对某个东西我们来使用它,因此它包含有一个有输入而无

输出的accept接口方法;

除accept方法,它还包含有andThen这个方法;

2、Function(BiFunction)

Function也是一个函数式编程接口;

它代表的含义是“函数”,而函数经常是有输入输出的,因此它含有一个apply方法,包含一个输入与一个

输出;

除apply方法外,它还有compose与andThen及indentity三个方法;

3、Predicate

Predicate为函数式接口;

predicate的中文意思是“断定”,即判断的意思,判断某个东西是否满足某种条件; 因此它包含test方

法,根据输入值来做逻辑判断,其结果为True或者False。

4、Supplier

Supplier也是一个为函数式接口;

它代表的含义是“供应”,它含有一个get方法;

三、流操作Stream,流的操作有两种:Intermediate(中间)和Terminal(终端 )、short-circuiting(绕过)

常见的流操作可以如下归类:

1、Intermediate

map (mapToInt, flatMap 等)、 filter、 distinct、 sorted、 peek、 limit、 skip、 parallel、 sequential、

unordered

2、Terminal

forEach、 forEachOrdered、 toArray、 reduce、 collect、 min、 max、 count、 anyMatch、

allMatch、 noneMatch、 findFirst、 findAny、 iterator

3、Short-circuiting

anyMatch、 allMatch、 noneMatch、 findFirst、 findAny、 limit

四、并行流ParallelStream

除了普通的stream之外还有parallelStream,区别比较直观,就是stream是单线程执行,parallelStream

为多线程执行。parallelStream的创建及使用基本与stream类似。

不过由于是并行执行,parallelStream并不保证结果顺序,同样由于这个特性,如果能使用findAny就尽

量不要使用findFirst。 使用parallelStream时需要注意的一点是,多个parallelStream之间默认使用的是

同一个线程池,所以IO操作尽量不要放进parallelStream中,否则会阻塞其他parallelStream。

五、Optional

Optional的引入是为了解决空指针异常的问题。

Optional实际上是对一个变量进行封装,它包含有一个属性value,实际上就是这个变量的值。

1、方法

2、使用场景

a、判断结果不为空后使用 ifPresent

Optional s = Optional.ofNullable(test());

s.ifPresent(System.out::println);

b、变量为空时提供默认值 orElse

Optional o = Optional.ofNullable(s);

System.out.println(o.orElse("test"));

c、变量为空时抛出异常 orElseThrow

Optional o = Optional.ofNullable(s);

System.out.println(o.orElseThrow(()->new Exception("test")));

相关文章

  • Java 8

    Java 8简明教程 跟上 Java 8 – 你忽略了的新特性 跟上 Java 8 – 函数式编程 跟上 Java...

  • 函数式编程(一) lambda、FunctionalInterf

    由于函数式编程涉及内容较多,因此对函数式编程写一个系列博客,内容从JAVA8的新特性开始阐述,而后阐述函数式编程的...

  • lambda表达式

    概要: 函数式编程特性 lambda表达式语法及应用场景 Java 8自带函数式接口详解 一、函数式编程特性 1....

  • 2017年,Java程序猿10本经典好书推荐

    1、Java 8实战 本书全面介绍了Java 8 这个里程碑版本的新特性,包括Lambdas、流和函数式编程。有了...

  • Java进阶书籍(持续更新)

    Java程序员修炼之道,java7的新特性 写给大忙人看的java se 8 函数式编程思维 Java性能优化权威...

  • Java 8 lambda 表达式

    lambda 表达式是 Java 8 支持的新特性之一。通过 lambda 表达式,Java 具备了函数式编程的能...

  • Java 8 新特性:函数式编程

    Java 8 新特性:函数式编程 一、是什么? 首先需要清楚一个概念:函数式接口; 它指的是有且只有一个未实现的方...

  • Lambda表达式相关

    前言 Lambda表达式是 java8 引入的一个新特性。其配合另一个新特性———函数式编程,可以有效的提高编码...

  • java8中的Stream

    java8提出的函数式编程旨在帮助程序猿们写出更优雅的代码,上文函数式编程基础也介绍了java8新提出的一些函数式...

  • java8 新特性

    java8 新特性 核心内容 Lambda:函数式接口编程,简化代码量,类型上下文自动推断。 Stream Api...

网友评论

      本文标题:Java 8 新特性:函数式编程

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