java8-----lambda语法
// -----lambda语法1------ https://www.baidu.com/link?url=6iszXQlsmyaoWVZMaPs3g8vLRQXzdzTnKzQYTF8lg-5QQthjAu1KMSxRbEU_PznfUS4-KVH1hfn64wdAOahiCq&wd=&eqid=d6aa9d87000231f1000000065dfc8e0a
//1.lambda语法包括3个部分:
// (参数列表)->{方法体;}
// 只有一个参数时,()可以省略
// 方法体只有一行时可以省略{;}
//2.当一个参数都没有的时候,仍然可以使用lambda表达式
// 使用lambda表达式启动一个新的线程
// ()对应run方法的参数
// ->后面表示run的方法体
new Thread(() -> System.out.println("使用lambda启动线程")).start();
//3.如果要使用lambda来声明接口那么接口中只能有一个抽象方法
// 因为函数接口是只有一个抽象方法的接口(抽象的方法只能有一个,可以有其他的用default修饰的方法)
String s = "lambda test";
int i = 100;
MyInterface myInterface = (str, m) -> {
//i++; 错误,无法对i的值进行修改
System.out.println(i);
System.out.println(str + " " + m);
return str + "----" + str;
};
String result1 = myInterface.test(s, 0);
System.out.println(result1);
//-----lambda语法2------ https://www.cnblogs.com/kangkaii/p/8419082.html
String[] arr1 = {"program", "creek", "is", "a", "java", "site"};
Arrays.sort(arr1, (String m, String n) -> Integer.compare(m.length(), n.length()));
System.out.println(Arrays.toString(arr1));
//2,参数类型可以推断
//如果参数的类型可以根据上下文推断出来,则可以省略掉类型。
//在上面的代码中,参数 m 与 参数 n 可以推测出来是String类型,所以可以省略。这样会让代码变得更加简洁,并且也更像是一个lambda表达式。
String[] arr2 = { "program", "creek", "is", "a", "java", "site" };
Arrays.sort(arr2, (m, n) -> Integer.compare(m.length(), n.length()));
System.out.println(Arrays.toString(arr2));
//3,存在多行代码
//如果sort() 里面的代码一行写不下的话,可以多行,但需要{} 括起来。而且代码应该有明确的返回语句。
String[] arr3 = { "program", "creek", "is", "a", "java", "site" };
Arrays.sort(arr3, (String m, String n) -> {
if (m.length() > n.length())
return -1;
else
return 0;
});
System.out.println(Arrays.toString(arr3));
//4,单个参数并可推断类型
//单个参数的lambda表达式,在参数类型可以推断出来的时候,可以省略参数 “x” 的括号。
String[] arr4 = { "program", "creek", "is", "a", "java", "site" };
Stream.of(arr4).forEach(x -> System.out.println(x));
//5,方法引用
//利用方法引用,上面的代码也可以被写成如下形式:
Stream.of(arr4).forEach(System.out::println);
| 工厂方法 | 返回类型 | 作用 |
|---|---|---|
| toList | List<T> | 把流中的所有元素收集到一个List |
| toSet | Set<T> | 把流中的所有元素收集到一个Set,删除重复项 |
| toCollection | Collection<T> | 把流中所有元素收集到给定的容器中menuStream.collect(toCollection(), ArrayList::new) |
| counting | Long | 计算流中的元素个数 |
| sumInt | Integer | 对流中的一个整数进行求和 |
| averagin | Double | 计算流中integer属性的平均值 |
| summarizingInt | IntSummaryStatistics | 收集关于流中 Integer 属性的统计值,例如最大、最小、 总和与平均值 |
| joining | String | 连接对流中每个元素调用 toString 方法所生成字符串collect(joining(", ")) |
| maxBy | Optoinal<T> | 一个包裹了流中按照给定比较器选出的最大元素的 Optional, 或如果流为空则为 Optional.empty() |
| minBy | Optional<T> | 一个包裹了流中按照给定比较器选出的最小元素的 Optional, 或如果流为空则为 Optional.empty() |
| reducing | 从一个作为累加器的初始值开始,利用 BinaryOperator 与流 中的元素逐个结合,从而将流归约为单个值累加int totalCalories = menuStream.collect(reducing(0, Dish::getCalories, Integer::sum)); | |
| collectingAndThen | 包裹另一个收集器,对其结果应用转换函数int howManyDishes = menuStream.collect(collectingAndThen(toList(), List::size)) | |
| groupingBy | Map<K, List<T>> | 根据项目的一个属性的值对流中的项目作问组,并将属性值作 为结果 Map 的键 |
| partitioningBy | Map<Boolean,List<T> | 根据对流中每个项目应用谓词的结果来对项目进行分区 |
链接:https://www.jianshu.com/p/28bcf21dfd03
java8-----lambda语法的更多相关文章
- java8 Lambda表达式的新手上车指南(1)--基础语法和函数式接口
背景 java9的一再推迟发布,似乎让我们恍然想起离发布java8已经过去了三年之久,java8应该算的上java语言在历代版本中变化最大的一个版本了,最大的新特性应该算得上是增加了lambda表达式 ...
- Java8 lambda表达式语法 1
本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人也是刚刚开始学习Java8,所以文中肯定有错误和理解偏差的地方,希望大家帮忙指出,我会持续修改和优化.本文是该系列的第一篇, ...
- java8 Lambda表达式的新手上车指南(1)
背景 java9的一再推迟发布,似乎让我们恍然想起离发布java8已经过去了三年之久,java8应该算的上java语言在历代版本中变化最大的一个版本了,最大的新特性应该算得上是增加了lambda表达式 ...
- 【Java学习笔记之三十一】详解Java8 lambda表达式
Java 8 发布日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表达式,它将允许我们将行为传到函数里.在Java 8之前 ...
- java8 快速入门 lambda表达式 Java8 lambda表达式10个示例
本文由 ImportNew - lemeilleur 翻译自 javarevisited.欢迎加入翻译小组.转载请见文末要求. Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发 ...
- Java8 lambda表达式10个示例
Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表达式,它将允许我们将行为传到函数里.在Ja ...
- Atitit.jdk java8的语法特性详解 attilax 总结
Atitit.jdk java8的语法特性详解 attilax 总结 1.1. 类型推断这个特别有趣的.鲜为人知的特性1 2. Lambda1 2.1. 内部迭代意味着改由Java类库来进行迭代,而不 ...
- java8 lambda 函数式编程
package com.atguigu.java8; import java.util.ArrayList; import java.util.Comparator; import java.util ...
- Java8 Lambda表达式详解手册及实例
先贩卖一下焦虑,Java8发于2014年3月18日,距离现在已经快6年了,如果你对Java8的新特性还没有应用,甚至还一无所知,那你真得关注公众号"程序新视界",好好系列的学习一下 ...
- Java8——Lambda表达式
/* * 一.Lambda 表达式的基础语法:Java8中引入了一个新的操作符 "->" 该操作符称为箭头操作符或 Lambda 操作符 * 箭头操作符将 Lambda 表达 ...
随机推荐
- 常用数列总结&性质记录
1.斐波那契数列 P.S.:这里首项下标为 1 递推式:\[F_i=F_{i-1}+F_{i-2},F_1=F_2=1\] 性质: \(1.\sum^{n}_{i=1}F_{i}=F_{n+2}-1\ ...
- wordpress在线预览pdf插件
插件名称:PDF.js Viewer Shortcode 插件主页:http://tphsfalconer.com/ 优点:功能强大,有分页缩略图功能,翻页,放大缩小,打印,下载,读取等功能. 使用方 ...
- [51nod 1830] 路径交
问题描述 给定一棵n个点的树,以及m条路径,每次询问第L条到第R条路径的交集部分的长度(如果一条边同时出现在2条路径上,那么它属于路径的交集). 输入格式 第一行一个数n(n<=500,000) ...
- mvn 本地jar包 加入自己的maven仓库
-Dfile :你的jar的名称 -DgroupId :在pom中的groupId -DartifactId :在pom中的artifactId -Dversion :在pom中的version 在j ...
- idea万能快捷键,你不知道的17个实用技巧!!!
IDEA里有一个万能快捷键(alt enter),功能非常强大,同一个快捷键,可以根据不同的语境提示你不同的操作,很多人可能还不了解这些功能,在处理代码的时候还手动处理,了解这些技巧之后,你编码也是一 ...
- Codeforces 912D Fishs ( 贪心 && 概率期望 && 优先队列 )
题意 : 给出一个 N * M 的网格,然后给你 K 条鱼给你放置,现有规格为 r * r 的渔网,问你如果渔网随意放置去捕捞小鱼的情况下,捕到的最大期望值是多少? 分析 : 有一个很直观的想法就是 ...
- 文件操作:fread()和fwrite()
fread和fwrite函数功能 用来读写一个数据块. 一般调用形式 fread(buffer,size,count,fp); fwrite(buffer,size,cou ...
- 苹果手机上input的button按钮颜色显示问题
在苹果手机上的input按钮自带效果,需要加上outline:0px; -webkit-appearance:none; 清除原有样式,同时苹果手机上的input按钮自带圆角需要按需要去掉 input ...
- mysql语句错误
select * from order where id = 1; 同学问我这句话有什么问题,乍一看真看不出毛病,后来发现order是mysql关键字,这样写是不对的,所以要加一个双引号才会更好一点 ...
- zabbix 监控安装部署
今天尝试一下部署zabbix 官方文档包括多个版本,此处选择4.0版本 https://www.zabbix.com/documentation/4.0/manual 1.安装环境选择 zabbix4 ...