JavaSE——Lambda表达式
时间:2023-03-18
本文章向大家介绍JavaSE——Lambda表达式,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
package com.zhao.lambdademo;
public class LambdaDemo1 {
public static void main(String[] args) {
//正常的匿名内部类写法
/*Swimming swim=new Swimming() {
@Override
public void swim() {
System.out.println("重写了游泳方法");
}
};*/
//使用lambda表达式简化匿名内部类写法
Swimming swim=()->{
System.out.println("用lambda表达式重写了游泳方法");
};
//调用go方法
//go(swim);
//也可以直接将用lambda表达式简化出的匿名内部类作为对象直接作为参数填入
go(()->{
System.out.println("用lambda表达式重写了游泳方法");
});
}
//写一个go方法运行接口中的swim方法
public static void go(Swimming s){
System.out.println("start..");
s.swim();
System.out.println("..end");
}
}
//Lambda表达式只能简化函数式接口的匿名内部类的写法形式
//必须是个接口并有且仅有一个方法的接口叫做函数式接口
//只关注方法实现过程,不需要考虑对象
@FunctionalInterface
interface Swimming{
void swim();
}
package com.zhao.lambdademo;
import java.util.Arrays;
import java.util.Comparator;
public class LambdaDemo2 {
//用lambda表达式简化Comparator接口的匿名形式
public static void main(String[] args) {
Integer[] arr1={44,2,22,77,55};
Integer[] arr2={444,22,222,777,555};
Integer[] arr3={4444,222,2222,7777,5555};
//正常使用比较器接口的匿名内部类重写sort方法进行降序
/*Arrays.sort(arr, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
});*/
//使用lambda表达式简化
//省略核心:可推导,可省略
//初级:
//省略头部
Arrays.sort(arr1, (Integer o1, Integer o2)-> {
return o2-o1;
}
);
//中级:
//省略数据类型
Arrays.sort(arr2, ( o1, o2)-> {
return o2-o1;
}
);
//高级
//省略return关键字与大括号
Arrays.sort(arr3,(o1, o2) -> o2-o1);
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr2));
System.out.println(Arrays.toString(arr3));
}
package com.zhao.lambdademo;
import java.util.Arrays;
import java.util.Comparator;
public class LambdaTest {
//练习:定义一个数组存储一些字符串,利用Arrays中的sort方法进行排序
/*要求:
按照字符串的长度进行排序,短的在前,长的在后。
*/
public static void main(String[] args) {
String[] arr={"a","aaa","aa","aaaaa","aaaa"};
//利用Comparator接口自定义规则
/*Arrays.sort(arr, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.length()-o2.length();
}
});*/
//使用lambda表达式的完整格式
/*Arrays.sort(arr, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.length()-o2.length();
}
});*/
//最终简写
//小括号里的:数据类型可以省略,如果参数只有一个,小括号也可以省略
//大括号里的:如果方法体只有一行,那么return、分号、大括号都可以省略
Arrays.sort(arr,(o1, o2)-> o1.length()-o2.length());
System.out.println(Arrays.toString(arr));
}
}
原文地址:https://www.cnblogs.com/javaHane/p/17229296.html
- SendCloud邮件队列状态和已使用额度的Python监控脚本
- linux/scp命令报“bash: scp: command not found lost connection”错误的解决办法
- bat/cmd批处理连接SqlServer数据库查询脚本
- 一起用 HTML5 Canvas 做一个简单又骚气的粒子引擎
- 解决mstsc无法连接问题:由于没有远程桌面授权服务器可以提供许可证…
- Apache/Nginx伪静态规则匹配http://出现的问题与解决
- 微信文件微起底
- Go语言TCP Socket编程--1
- Go语言TCP Socket编程--2
- 服务器 数据库设计技巧--1
- CVE-2015-0235:Linux glibc高危漏洞的检测及修复方法
- zabbix监控在lnmp环境下编译安装小记
- 【重磅】百度开源分布式深度学习平台,挑战TensorFlow (教程)
- WordPress评论ajax动态加载,解决静态缓存下评论不更新问题
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 历时4个多月,学习了这 66 个CSS 特效
- ArrayList、LinkedList哪家强,据说90%人都不知道
- Windows创建克隆隐藏账号
- 学员分享-aspera踩坑记录
- BOSS直聘招聘信息获取之爬虫工具分析
- 把你的shiny网页工具部署在云服务器
- 面试中的路由问题
- BOSS直聘招聘信息获取之使用webdriver进行爬取
- es6中class的一些基础知识和es5语法的对比
- Windows 系统常用命令行命令(一):前言
- Vue项目使用mt-picker实现省市区三级联动踩坑记录
- Windows 系统常用命令行命令(二):路径与文件夹操作
- 微信小程序订阅消息推送
- 2020年中央一号文件说了啥?
- mpvue框架下小程序分享朋友圈功能实现