随手记录第十二话 -- JDK8-21版本的新增特性记录(Lambda,var,switch,instanceof,record,virtual虚拟线程等)
本文主要用于记录jdk8以来的新增特性及使用方法!
1.Java8 Lambda表达式(8)
1.1 方法引用
List<String> list = List.of("1", "2", "3");list.forEach(i -> System.out.println(i));//方法引用list.forEach(System.out::println);
1.2 接口支持默认方法
public interface MyTest {default void defaultMethod(){System.out.println("default Method");}
}
1.3 Stream API流式API
List<String> list = List.of("1", "2", "3");//过滤再循环list.stream().filter(i -> !"1".equals(i)).forEach(System.out::println);//过滤再输出List<String> list1 = list.stream().filter(i -> !"1".equals(i)).toList();System.out.println(JSONObject.toJSONString(list1)); //["2","3"]//过滤再转mapList<Map<String, Object>> list2 = list.stream().filter(i -> !"1".equals(i)).map(s -> {Map<String, Object> map = new HashMap<>();map.put("a_" + s, s);return map;}).toList();System.out.println(JSONObject.toJSONString(list2)); //[{"a_2":"2"},{"a_3":"3"}]//转类型List<Long> list3 = list.stream().map(Long::valueOf).toList();System.out.println(JSONObject.toJSONString(list3)); //[1,2,3]
1.4 Map新增且实用的方法
Map<String, Integer> map = new HashMap<>();map.put("a", 1);map.put("b", 2);//foreachmap.forEach((key, value) -> System.out.println(key + ": " + value));//getOrDefault 取值为空返回默认值int c = map.getOrDefault("c", 22);System.out.println(c); //22//replace 如果存在值替换当前key的值map.replace("b", 10);System.out.println(map); //{a=1, b=10}//替换时带匹配值map.replace("b", 10, 20);System.out.println(map); //{a=1, b=20}//replaceAll 可对每个key或者value做操作map.replaceAll((key, value) -> value + 1);System.out.println(map); //{a=2, b=21}//putIfAbsent key不存在才存入map.putIfAbsent("a", 11);map.putIfAbsent("c", 3);System.out.println(map); //{a=2, b=21, c=3}//computeIfAbsent 如果值不存在 则执行后面的函数map.computeIfAbsent("d", key -> 4);System.out.println(map); //{a=2, b=21, c=3, d=4}//computeIfPresent 如果存在且值非空 可重新计算map.computeIfPresent("b", (key, value) -> value + 10);System.out.println(map); //{a=2, b=31, c=3, d=4}//compute 使用函数计算存入map.compute("b", (key, value) -> (value == null) ? 40 : value + 1);map.compute("e", (key, value) -> (value == null) ? 40 : value + 1);System.out.println(map); //{a=2, b=32, c=3, d=4, e=40}//mergemap.merge("b", 1, (oldValue, newValue) -> oldValue + newValue);System.out.println(map); //{a=2, b=33, c=3, d=4, e=40}//remove 当指定key和值时才删除map.remove("a", 1);System.out.println(map); //{a=2, b=33, c=3, d=4, e=40}map.remove("a", 2);System.out.println(map); //{b=33, c=3, d=4, e=40}//of ofEntries 快捷创建 但映射不可变Map<String, Integer> of = Map.of("a", 1, "b", 2);System.out.println(of); //{b=2, a=1}Map<String, Integer> ofEntries = Map.ofEntries(Map.entry("a",1),Map.entry("b",2));System.out.println(ofEntries); //{b=2, a=1}
// of.put("a",3); //不管新增删除还是修改 俊辉报错
2. java11 var httpClient相关(11)
var list = List.of("1", "2", "3");list.forEach((var e) -> System.out.println(e));String str = " ";System.out.println(str.isBlank()); //trueSystem.out.println(str.isEmpty()); //false//java.net.httpJSONObject object = new JSONObject();object.put("fromId", 11234);var httpClient = HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(6)).build();HttpRequest httpRequest = HttpRequest.newBuilder(URI.create("http://192.168.168.199:9000/xxxxxx"))//post body请求
// .setHeader("Content-Type","application/json; charset=utf-8")
// .POST(HttpRequest.BodyPublishers.ofString(object.toJSONString())).build();HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());System.out.println(httpResponse.body());//okhttp3 http请求
// Request request = new Request.Builder()
// .url(noticeUrl)
.get()
// .post(RequestBody.create(object.toJSONString(), MediaType.parse("application/json; charset=utf-8")))
// .build();
// Response response = Web3jUtils.httpClient.newCall(request).execute();
// JSONObject jsonObject = JSONObject.parseObject(response.body().string());
// log.warn("发现提现消息:{},{}", object.toJSONString(), jsonObject.toJSONString());
3.新表达式和模块匹配(12-15)
3.1 switch 多行文本 instanceof
int day = 1;switch (day){case 2 -> System.out.println(false);case 1 -> System.out.println(true);default -> System.out.println("未知的!");}//多行文本String str = """texttext""";//instanceofif(str instanceof String s1){System.out.println(s1.toUpperCase(Locale.ROOT));}
4.记录 密封类 虚拟线程(16-21)
- 记录
public record Point(int x, int y) {}
- 密封类
public abstract sealed class Shape permits Circle, Square {}
public final class Circle extends Shape {}
public final class Square extends Shape {}
- 虚拟线程
Thread.ofVirtual().start(() -> {System.out.println("Hello from virtual thread");
});//使用Executors 创建和管理
ExecutorService executor = Executors.newVirtualThreadPerTaskExecutor();
for (int i = 0; i < 10; i++) {executor.submit(() -> {System.out.println("Hello from virtual thread!");});
}
executor.shutdown();
以上就是本文的全部内容了!
上一篇:随手记录第十一话 – PHP + yii2 初体验
下一篇:随手记录第十三话 – xxx
非学无以广才,非志无以成学。
相关文章:
随手记录第十二话 -- JDK8-21版本的新增特性记录(Lambda,var,switch,instanceof,record,virtual虚拟线程等)
本文主要用于记录jdk8以来的新增特性及使用方法! 1.Java8 Lambda表达式(8) 1.1 方法引用 List<String> list List.of("1", "2", "3");list.forEach(i -> System.out.println(i));//方法引用list.forEach(System.out::println);1.2 接…...
SpringCloud网关 SpringBoot服务 HTTP/HTTPS路由/监听双支持
背景 一般来说SpringCloud Gateway到后面服务的路由属于内网交互,因此路由方式是否是Https就显得不是那么重要了。事实上也确实如此,大多数的应用开发时基本都是直接Http就过去了,不会一开始就是直接上Https。然而随着时间的推移,…...
JavaScript做网页是否过期的处理
通过路由上的参数生成唯一md5和路由上token做验证_md5 token-CSDN博客 前言:基于这篇文章我们做网页是否超时,网页是否过期的处理。打开一个网页允许他在一定时间内可以访问,过了这个时间就不可以访问了,encrypt是h5加密方法&…...
python coding时遇到的问题
Q:只有cpu的时候加载模型 A:checkpoint torch.load(model_path, map_locationtorch.device(‘cpu’)) Q:vscode的文件路径和spyder的不一样 A:在vscode中,右键要用的文件,选择“文件相对路径”...
攻防演练号角吹响,聚铭铭察高级威胁检测系统助您零失分打赢重保攻坚战
在数字化浪潮中,攻防演练成为了衡量网络安全防御力的核心标尺,其重要性与日俱增。这项由政府、行业监管或企业内部主导的安全活动,随着互联网普及而兴起,现已发展成为全球公认的检验网络安全体系效能的标准。它不仅关乎技术实力的…...
个人量化交易兴起!有什么好用的量化软件推荐?迅投QMT量化平台简介!
QMT是专门为机构、活跃投资者、高净值客户等专业投资者研发的智能量化交易终端,拥有高速行情、极速交易、策略交易、多维度风控等专业功能,满足专业投资者的特殊交易需求。覆盖业务范围广:沪深A股、港股通、两融、期权、期货。 适合用QMT的投资者&#x…...
SQL labs-SQL注入(七,sqlmap对于post传参方式的注入,2)
本文仅作为学习参考使用,本文作者对任何使用本文进行渗透攻击破坏不负任何责任。参考:SQL注入之Header注入_sqlmap header注入-CSDN博客 序言: 本文主要讲解基于SQL labs靶场,sqlmap工具进行的post传参方式的SQL注入,…...
SAM 2: Segment Anything in Images and Videos
Introduction 提出的目的: 1.现有的应用像自动驾驶,AR等来说都是需要temporal localization beyond image-level segmentation(时序定位而不仅是图片分割) 2. 一个好的分割模型不应该仅仅局限于图片领域,而是图视频两…...
软件测试面试,如何自我介绍?
又是一年金九银十,相信不少小伙伴都在准备跳槽面试,而面试中一个必不可少的环节就是自我介绍,所以,今天我们就来聊一聊软件测试面试中如何自我介绍。 为什么要自我介绍 在讨论如何自我介绍之前,我们先来讨论一下为…...
力扣第四十七题——全排列II
内容介绍 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例 1: 输入:nums [1,1,2] 输出: [[1,1,2],[1,2,1],[2,1,1]]示例 2: 输入:nums [1,2,3] 输出:[[1,2,3],…...
Springer旗下中科院2区TOP,国人优势大!
关注GZH【欧亚科睿学术】,第一时间了解期刊最新动态! 1 通信网络类 【期刊简介】IF:4.0-5.0,JCR1区,中科院3区 【出版社】ELSEVIER出版社 【检索情况】SCIE&EI双检,CCF-C类 【征稿领域】通信网络的…...
【C++】C++入门知识详解(下)
大家好~我们接着【C】C入门知识详解(上)-CSDN博客来介绍另一些C入门基础知识。 1.缺省值和缺省参数 缺省参数就是声明或定义函数时为函数的参数指定一个缺省参数。在调用该函数时,如果没有指定实参,则采用该形参的缺省值…...
分压电阻方式的ADC电压校准
无人机有个流程是电池电压校准。具体做法是:让你用万用表测量一下电池两端的电压,然后输入到文本框中,电机计算能重新计算出电压分压器的值,从而获得电池电压值。 这种方法实现的原理是这样的: 电阻分压检测电压原理,以上图为例: 当电路确定时,R2/(R1+R2)是一个定值R,…...
使用Postman测试API短轮询机制:深入指南
短轮询是一种Web开发中常用的技术,用于在客户端和服务器之间定期检查更新。与长轮询或WebSockets等技术相比,短轮询简单易实现,但可能带来较多的HTTP请求,从而增加服务器负担。Postman作为一个强大的API测试工具,可以用…...
明清进士人数数据
明清进士人数数据 指标:省份名称、城市名称、区县名称、明清各省进士人数、明清各城市进士人数、明清各县区进士人数 指标说明: Province[省份名称]-统计数据所属省份 City[城市名称]-统计数据所属地级市 Region[区县名称]-统计数据所属区县 MQpro…...
C# 串口通信(通过serialPort控件发送及接收数据)
连接串口 界面设计打开串口发送数据通过文件发送发送数据 接收数据 首先可以在 工具箱中搜索serialport,将控件拖到你的Winfrom窗口。 界面设计 打开串口 private void Connect_Click(object sender, EventArgs e){serialPort1.PortName comboBox2.Text;//端口名s…...
数据安全的新盾牌:SQL Server数据库镜像技术详解
数据安全的新盾牌:SQL Server数据库镜像技术详解 在数据驱动的商业世界中,数据库的安全性是维护企业运营的关键。SQL Server提供了多种数据保护机制,其中数据库镜像技术是一个强大的高可用性解决方案,它可以显著提高数据的安全性…...
【C语言版】数据结构教程(一)绪论(上)
【内容简介】本文整理数据结构(C语言版)相关内容的复习笔记,供各位朋友借鉴学习。本章内容更偏于记忆和理解,请读者们耐心阅读。 数据结构教程 绪论(上) 本节学习目标 1.1 基本概念 1.2 抽象数据类型的表示…...
酒后为什么总感觉渴?
喝酒后感到口渴,这种感觉其实很常见。这主要是因为酒精对我们的身体有几种影响。首先,酒精能够扩张血管,这会加快血液循环,让肾脏更加活跃,产生更多的尿液。这样一来,我们体内的水分就会通过排尿流失&#…...
Docker安装OwnCloud私有云盘对接ceph
一、安装OwnCloud 我的安装包链接:https://pan.baidu.com/s/1cJO8WEonsw4gGQWgQaYzpw?pwd6bak 提取码:6bak 启动OwnCloud容器,没有镜像会自动下载 docker run -d -p 80:80 -v /home/owncloud:/var/www/html --name owncloud --restartalway…...
创建了Vue项目,需要导入什么插件以及怎么导入
如果你不知道怎么创建Vue项目,建议可以看一看这篇文章 怎么安装Vue的环境和搭建Vue的项目-CSDN博客 1.在idea中打开目标文件 2.系在一个插件Vue.js 3.下载ELement UI 在Terminal中输入 # 切换到项目根目录 cd vueadmin-vue # 或者直接在idea中执行下面命令 # 安装element-u…...
abstract 关键字
在C#中,abstract 关键字是一个非常重要的特性,它用于定义抽象类和抽象成员(如方法、属性、索引器、事件或操作符)。使用 abstract 关键字的目的主要是为了提供一种机制,让基类能够指定一个或多个必须由派生类实现的方法…...
用Python编写你的网络监控系统详解
概要 在现代网络管理中,实时监控网络流量和状态是保证网络正常运行的关键。使用Python编写网络监控工具可以帮助管理员及时发现和解决网络问题。本文将详细介绍如何使用Python编写网络监控工具,包括基本概念、常用库及其应用场景,并提供相应的示例代码。 网络监控的基本概念…...
操作系统——虚拟内存
一、虚拟内存是什么? 虚拟内存类似一个桥梁,原来程序直接访问物理内存读取数据,现在程序直接访问虚拟内存,由虚拟内存再访问物理内存。 使用虚拟内存的好处: 隔离进程、提高内存使用安全性:每个进程直接…...
Zoom视频会议软件使用
Zoom 是一款广泛使用的视频会议软件,可以用于在线会议、网络研讨会、课堂教学、团队协作等。以下是使用 Zoom 的基本步骤和一些有用的技巧: 安装 Zoom 下载并安装: 访问 Zoom 下载页面。下载适用于你的操作系统(Windows, macOS, Linux, iOS, Android)的客户端。安装完成后…...
MVC软件设计模式及QT的MVC架构
目录 引言 一、MVC思想介绍 1.1 MCV模型概述 1.2 Excel的处理数据 1.3 MVC模式的优势 二、QT中的MVC 1.1 模型(Model) 1. QAbstractItemModel 2. QStringListModel 3. QStandardItemModel 4. QSqlTableModel 和 QSqlQueryModel 5. QAbstract…...
使用WSL通过SSH连接并运行图形界面程序
使用WSL通过SSH连接并运行图形界面程序 1. 在Windows上安装X服务器2. 配置并启动VcXsrv3. 在WSL Ubuntu中设置DISPLAY变量4. 从WSL Ubuntu连接到远程服务器5. 在远程服务器上设置DISPLAY变量6. 测试X11转发7. 运行您的安装程序注意事项 在Windows Subsystem for Linux (WSL) 上…...
柳湛宇-简历
...
6-1 从全连接层到卷积
我们之前讨论的多层感知机十分适合处理表格数据,其中行对应样本,列对应特征。 对于表格数据,我们寻找的模式可能涉及特征之间的交互,但是我们不能预先假设任何与特征交互相关的先验结构。 此时,多层感知机可能是最好的…...
【Android Studio】项目目录结构
文章目录 常用视图Android视图project视图 gradlebuild.gradleSDK 路径主题入口程序 常用视图 Android视图 project视图 gradle build.gradle SDK 路径 主题 入口程序...
优秀网站制作/全国疫情最新报告
#写一个自动生成密码文件的程序 # 1 输入几,文件里面就产生多少条密码 input #2 密码必须包含 大写字母 小写字母 数字 特殊字符 #3 密码不能重复 #4 密码都是随机产生的 #5 密码长度6-11位import string,random pwd_len input(请输入你要产生多少条密码…...
做flash网站/河南网站排名
win10家庭版 监听无法启动 报TNS-12560 TNS-00530 首先win10权限问题, 搜索设置->更新和安全 ->恢复->高级启动立即重启 疑难解答-高级选项-启动设置-重启-选择“4” 按“WINR”组合键,输入“control userpasswords2”, 属性-组成员…...
中学生怎么做网站/网站seo排名优化软件
1.static-静态属性 (1)static代表“全局”或“静态”,可以理解为:方便在没有创建对象的情况下来进行某些操作。通常用于修饰成员变量和方法,也可以形成静态代码块。 实际应用中,可将需频繁操作、通用…...
重庆建设工程公司网站/网络推广销售是做什么的
Archaius是什么? 一句话:可以动态的管理属性配置文件。使用相关的API使用属性就可以实现动态的数性加载。 参考自Getting-Started * 引入项目中* <dependency><groupId>com.netflix.archaius</groupId><artifactId>archaius-…...
为什么不用原来的网站做推广/百度sem运营
在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目…...
盘锦如何做百度的网站/网站优化招商
Docker 修改容器端口 本文介绍如何修改容器端口 对于已经创建的容器,可以通过下面的方法修改端口: 将容器提交为镜像,重新运行修改容器配置文件 将容器提交为镜像,重新运行 略 修改容器配置文件 修改前需要关闭docker&…...