Java 8:让你的代码更简洁、高效和灵活的新特性

Java 8 ——企业中使用最普遍的版本,那么了解它的新特性是非常有必要的

目录

一、函数式接口

二、Lamdba表达式

三、方法引用

四、Stream API

3.1 创建

方法一:通过集合

方法二:通过数组

方法三:通过Stream的of()

方法四:创建无限流

3.2中间操作

1.筛选与切片

2.映射

3.排序

3.3终止操作

1.匹配与查找

2.归约

3.收集 

五、LocalDatetime

六、Optional类

七、接口中定义默认方法

八、Nashorn JavaScript 引擎


一、函数式接口

只有一个方法的接口,通常用@FunctionalInterface注解标识。

二、Lamdba表达式

对匿名内部类的替代,代码更简洁,只适用于函数式接口。

 Runnable runnable = new Runnable(){@Overridepublic void run() {System.out.println("调用");}};Runnable runnable1 = ()->{System.out.println("调用");};

三、方法引用

方法引用是一种简化 Lambda 表达式的写法,它不带任何参数,可以通过方法的名字来引用一个已有的方法或构造器。

方法引用的语法格式是 :

  • 类名::方法名

  • 对象名::方法名

例如 String::length 表示一个获取字符串长度的函数,System.out::println 表示一个输出内容到控制台的消费者。

四、Stream API

Stream API对数组或者集合中的数据进行操作。 对于MySql,Oracle等可以用SQL语句处理,对于MongDB,Radis等NoSQL的数据需要java层面去处理,其中之一便有Stream API。

注意:

  • Stream自己不会存储元素,是用来对集合进行相关计算

  • Stream不会改变源对象,相反,他们会返回一个持有结果的新的Stream

  • Stream操作是延迟进行的,他们会等到需要结果的时候才执行

4.1 创建

方法一:通过集合

List<对象> a = new Arrylist<>();
//返回一个顺序流
Stream<对象> stream = a.stream;
//返回一个并行流
Stream<对象> parallelStream = a.parallelStream();

方法二:通过数组

int[] arr = new int[]{对象1,对象2,对象3};
IntStream stream =  Arrays.stream(arr);

方法三:通过Stream的of()

Stream<Integer> stream = Stream.of(1,2,3);

方法四:创建无限流

//取前十个偶数
Stream.iterate(0,t->t+2).limit(10).forEach(System.out::println);

4.2中间操作

注意:一旦执行了中止操作,原来的stream无法再使用,需要再次创建!

1.筛选与切片

2.映射

3.排序

4.3终止操作

1.匹配与查找

2.归约

 

3.收集 

 

五、LocalDatetime

LocalDate、LocalTime、LocalDateTime(第三代日期) 

 

六、Optional类

用来判断空指针,避免空指针异常问题

七、接口中定义默认方法

接口中可以编写方法,用default修饰

八、Nashorn JavaScript 引擎

Nashorn JavaScript 引擎:Java 8 提供了一个新的 Nashorn JavaScript 引擎,它可以让开发者在 JVM 上运行特定的 JavaScript 应用。Nashorn JavaScript 引擎使用了新的语法解析器和编译器,比旧版的 Rhino 引擎更加高效和快速。Nashorn JavaScript 引擎可以通过

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/25626.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《JeecgBoot系列》JeecgBoot(ant-design-vue) 识别字段中指定内容并修改该行文字颜色

JeecgBoot(ant-design-vue) 识别字段中指定内容并修改该行文字颜色 需求&#xff1a;将生产工厂是配件工厂的行改变颜色标注 一、修改table组件内容 在<a-table></a-table>内添加:rowClassName"tableRowClass" <a-table>...:rowClassName"t…

【Linux】从0到1实现一个进度条小程序

个人主页&#xff1a;&#x1f35d;在肯德基吃麻辣烫 我的gitee&#xff1a;gitee仓库 分享一句喜欢的话&#xff1a;热烈的火焰&#xff0c;冰封在最沉默的火山深处 文章目录 前言一、理解回车 \r 和换行 \n二、初步认识缓冲区1. 认识第一个函数&#xff1a;sleep2.观察缓冲区…

Hive终端命令行打印很多日志时,如何设置日志级别

示例&#xff1a;use test; 切换到test数据库时&#xff0c;输出很多日志信息不方便看结果&#xff0c;如下图。 解决方法&#xff1a; 退出hive命令行界面&#xff08;ctrlC&#xff09;执行“vi /usr/local/apache-hive-3.1.2-bin/conf/log4j.properties”命令&#xff0c;创…

Windows环境下VSCode安装PlatformIO Cero报错ERROR: HTTP error 403 while getting

安装PlatformIO插件成功&#xff0c;初始化失败 错误信息判断问题尝试访问https://pypi.tuna.tsinghua.edu.cn/simple/platformio/成功点击文件后报错如下&#xff1a; 解决问题- 换源 &#xff08; Windows下有两个地方需要更改&#xff09;cmd命令行Pip文件 总结&#xff1a;…

Python自动化测试之用Robot Framework进行自动化测试详解

概要 你还在手动测试&#xff1f;不妨了解一下更高效、准确且简单的测试方法——使用Python的Robot Framework进行自动化测试。 什么是Robot Framework&#xff1f; Robot Framework是一款开源的Python自动化测试框架&#xff0c;它基于关键字驱动的思想&#xff0c;具有易读、…

Autoware.ai1.14.0自动驾驶-Demo运行

Autoware.ai1.14.0自动驾驶-Demo运行 数据准备 下载数据&#xff1a; wget https://autoware-ai.s3.us-east-2.amazonaws.com/sample_moriyama_data.tar.gz wget https://autoware-ai.s3.us-east-2.amazonaws.com/sample_moriyama_150324.tar.gz一定要注意解压文件是在.auto…

比较 Java Enterprise Architecture 中的 MongoDB 和 Couchbase

​MongoDB和Couchbase是两种常用的NoSQL数据库&#xff0c;用于在Java实现的企业架构中存储和管理数据。以下是它们之间的主要差异、比较和权衡。 在当今快速发展的企业架构领域&#xff0c;MongoDB和Couchbase已经成为NoSQL数据库中两个重要的竞争者。本文全面探讨了这两个强…

【链表OJ 1】移除链表元素val

大家好&#xff0c;欢迎来到我的博客&#xff0c;此题是关于链表oj的第一题&#xff0c;此后还会陆续更新博客&#xff0c;如有错误&#xff0c;欢迎大家指正。 来源:https://leetcode.cn/problems/remove-linked-list-elements/description/ 题目: 方法一:定义prev和cur指针…

Prometheus服务器、Prometheus被监控端、Grafana、Prometheus服务器、Prometheus被监控端、Grafana

day03 day03Prometheus概述部署Prometheus服务器环境说明&#xff1a;配置时间安装Prometheus服务器添加被监控端部署通用的监控exporterGrafana概述部署Grafana展示node1的监控信息监控MySQL数据库配置MySQL配置mysql exporter配置mysql exporter配置prometheus监控mysql自动…

ApplicationContent 和BeanFactory的关系

选中这个类&#xff0c; ctrl alt u 从springboot的启动类说起 我们知道这个启动类返回值呢是哟个configurableApplicationContent 类型 我们查看她的类图 从图中我们可以看出&#xff0c;configurableApplicationContent是见解的继承了BeanFactory接口&#xff0c;扩展了他…

【传统视觉】C#创建、封装、调用类库

任务 因为实现代码相对简单&#xff0c;然后又没有使用Opencv&#xff0c;所以就直接用C#实现&#xff0c;C#调用。 1.创建类库 1.1新建一个类库 vs2015 > 文件 > 新建 > 项目 using System; using System.Collections.Generic; using System.Linq;namespace Yo…

LeetCode--HOT100题(23)

目录 题目描述&#xff1a;206. 反转链表&#xff08;简单&#xff09;题目接口解题思路代码 PS: 题目描述&#xff1a;206. 反转链表&#xff08;简单&#xff09; 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 LeetCode做题链接&…

git clone 登录 github

git clone 登录 github 目录概述需求&#xff1a; 设计思路实现思路分析1.github 设置setting2.输入passwd 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result…

Android系统APP之SettingsProvider

前言 SettingsProvider顾名思义是一个提供设置数据共享的Provider&#xff0c;SettingsProvider和Android系统其它Provider有很多不一样的地方&#xff0c;如&#xff1a; SettingsProvider只接受int、float、string等基本类型的数据&#xff1b;SettingsProvider由Android系…

HTML5(H5)的前生今世

目录 概述HTML5与其他HTML的区别CSS3与其他CSS版本的区别总结 概述 HTML5是一种用于构建和呈现网页的最新标准。它是HTML&#xff08;超文本标记语言&#xff09;的第五个版本&#xff0c;于2014年由万维网联盟&#xff08;W3C&#xff09;正式推出。HTML5的前身可以追溯到互联…

OpenAI 已为 GPT-5 申请商标,GPT-4 发布不到半年,GPT-5 就要来了吗?

据美国专利商标局&#xff08;USPTO&#xff09;信息显示&#xff0c;OpenAI已经在7月18日申请注册了“GPT-5”商标。 在这份新商标申请中&#xff0c;OpenAI将“GPT-5”描述为一种“用于使用语言模型的可下载计算机软件”。 继GPT-4发布之后&#xff0c;它预计将成为OpenAI下一…

【ChatGPT 指令大全】怎么利用ChatGPT写报告

目录 选定切入角度 报告开头 大纲生成 草稿撰写 研究报告 提出反对观点 报告总结 研究来源 总结 随着人工智能技术的快速发展&#xff0c;自然语言处理技术在各个领域的应用越来越广泛。其中&#xff0c;ChatGPT作为目前最先进的自然语言处理模型之一&#xff0c;其强…

数据结构【第2章】——算法

算法 算法是解决特定问题求解步骤的描述&#xff0c;在计算机中表现为指令的有限序列&#xff0c;并且每条指令表示一个或多个操作。 注&#xff1a;算法定义中&#xff0c;提到了指令&#xff0c;指令能被人或计算装置执行。它可以是计算机指令&#xff0c;也可以是我们平时…

如何离线安装ModHeader - Modify HTTP headers Chrome插件?

如何离线安装ModHeader - Modify HTTP headers Chrome插件&#xff1f; 1.1 前言1.2 打开Chrome浏览器的开发者模式1.3 下载并解压打包好的插件1.4 解压下载好的压缩包1.5 加载插件1.6 如何使用插件? 1.1 前言 ModHeader 是一个非常好用的Chrome浏览器插件&#xff0c;可以用…

untiy 连接两个UI或一段固定一段跟随鼠标移动的线段

注意&#xff0c;仅适用于UI&#xff0c;且Canvas必须是Camera模式&#xff0c;不能用在3D物体上&#xff0c;3D物体请使用LineRenender 先创建一个图片&#xff0c;将锚点固定在左边 然后在脚本中添加如下内容 public RectTransform startObj;//起点物体public RectTransfor…