美文网首页
java lambda 表达式

java lambda 表达式

作者: 葡萄肉多 | 来源:发表于2019-07-11 20:13 被阅读0次

Lambda 表达式语法

args -> expr

args -> {return expr;}

整个表达式由三个部分组成:

第一部分为一个括号内用逗号分隔的形式参数,参数是函数式接口里面方法的参数;

第二部分为一个箭头符号:->;

第三部分为方法体,可以是表达式和代码块。

代码例子

() -> {System.gc();return 0;};

(Thread t) -> t.start();

(int i , int j) -> return i + j;

当形式参数只有一个时,()不是必须的。相反当参数的个数不为1时,()是一定要的。参数的具体类型也不需要具体指定,如果编译器可以根据程序上下文进行类型推断。 方法体有多个语句时必须用{}包裹。如果只有一个语句,不管是否有返回值,都可以不用{}包裹,一般不推荐用{}包裹。

方法引用和构造器引用

方法引用使用::操作符将方法名和对象或类名分隔,常用以下三种形式:

对象::实例

方法类::静态方法

类::实例方法

在 lambda 表达式中加入Predicate

java.util.function.Predicate 允许将两个或更多的 Predicate 合成一个。它提供类似于逻辑操作符AND和OR的方法,名字叫做 and()or(),用于将传入 filter() 方法的条件合并起来。例如,要得到所有以J开始,长度为四个字母的语言,可以定义两个独立的 Predicate 示例分别表示每一个条件,然后用 Predicate.and() 方法将它们合并起来,如下所示

// 甚至可以用and()、or()逻辑函数来合并Predicate

// 例如要找到所有以J开始,长度为四个字母的名字,你可以合并两个Predicate并传入Predicate<String> startsWithJ = (n) -> n.startsWith("J");

Predicate<String> fourLetterLong = (n) -> n.length() == 4;

names.stream()

.filter(startsWithJ.and(fourLetterLong))

.forEach((n) -> System.out.print("nName, which starts with 'J' and four letter long is : " + n));

Map和Reduce

Map和Reduce操作是函数式编程的核心操作,因为其功能,reduce 又被称为折叠操作。另外,reduce 并不是一个新的操作,你有可能已经在使用它。SQL中类似 sum()avg() 或者 count() 的聚集函数,实际上就是 reduce 操作,因为它们接收多个值并返回一个值。

对列表的每个元素应用函数

在 map() 方法里,就可以对集合的各个元素进行转换

List<String> G7 = Arrays.asList("USA", "Japan", "France", "Germany", "Italy", "U.K.","Canada");

String G7Countries = G7.stream().map(x -> x.toUpperCase()).collect(Collectors.joining(", "));System.out.println(G7Countries);

过滤

filter方法

相关文章

  • Java 8 - Lambda表达式

    Java 8 - Lambda表达式 1 Java 8-概述2 Java 8 - Lambda表达式3 Java ...

  • 【Java】4.0 Java中lambda表达式(下)

    【Java】3.0 Java中lambda表达式(上)【Java】4.0 Java中lambda表达式(下) 7....

  • java 8 lambda表达式中的异常处理

    java 8 lambda表达式中的异常处理 简介 java 8中引入了lambda表达式,lambda表达式可以...

  • java8

    1.lambda表达式《java8 Lambda表达式简介》 《java8 lambda表达式,方法的引用以及构造...

  • 《Java 8实战》学习总结

    Java 8新特性概览 Lambda表达式 流 默认方法 Lambda表达式 Lambda和函数式接口Java 8...

  • Java零基础自学DAY10 2018-03-22

    Java 8 新增的lambda表达式 Lambda 转换: Lambda表达式组成: 形参列表 箭头 ( ->)...

  • Java 8、9 语言新特性

    Java语言新特性 Java8 Java 8 新特性 Lambda 表达式 Lambda表达式(也叫做闭包)是Ja...

  • Java的Lambda表达式

    Java的Lambda表达式 1. 什么是Lambda表达式 简单的说,Lambda表达式就是匿名方法。Lambd...

  • Lambda表达式

    Lambda表达式与函数式接口紧密相关,函数式接口介绍 Lambda表达式的基本语法 Java Lambda表达式...

  • 7 Lambda表达式

    Lambda表达式是Java8的重要更新,Lambda表达式支持将代码块作为方法参数,Lambda表达式允...

网友评论

      本文标题:java lambda 表达式

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