搞懂 Java 8 ~ Java 17
Java 8 ~ Java 17
冷风扇666
稳扎稳打 脚踏实地
展开
-
使用 Optional 优雅处理可能为null的值
在Java开发中,我们经常需要处理可能为null的值。为了提高代码的可读性和避免空指针异常,Java 8引入了Optional类。Optional是一个容器对象,用于包装可能为null的值。本文将介绍Optional的基本用法、源码解析以及一些常用的操作方法。Optional的引入使得我们能够更优雅地处理可能为null的值,提高代码的可读性。在适当的场景下使用Optional,可以有效地避免空指针异常,让代码更加健壮。原创 2024-01-27 21:57:40 · 1350 阅读 · 2 评论 -
Java 17 中的 Switch 表达式模式匹配与记录类型
Java 17 引入的另一个重要特性是记录类型。记录类型是一种简化声明不可变数据类的语法糖。在上述例子中,我们使用了记录类型来定义。在 Java 17 中,switch 表达式得到了增强,引入了模式匹配,使得代码编写更加简洁。类,并使用 switch 表达式模式匹配获取形状类型的结果。这使得代码更加紧凑和易读,特别是在处理枚举类型时。类,省略了繁琐的构造方法、getter 方法和其他样板代码,使代码更加简洁。记录类型使得创建和使用不可变对象更加方便,提高了代码的可读性和可维护性。原创 2024-01-03 22:33:38 · 937 阅读 · 4 评论 -
String 类 - Java 8
java.lang.String.matches(String)方法是用来判断当前字符串是否满足给定的正则表达式。如果该字符串与正则表达式匹配,则返回true,否则返回false。该单元测试创建了两个字符串变量str1和str2,并使用matches方法判断它们是否满足给定的正则表达式。第一个断言验证str1能够匹配包含小写字母和空格的正则表达式,而第二个断言验证str2不能匹配只包含小写字母的正则表达式。原创 2023-04-18 10:17:34 · 442 阅读 · 4 评论 -
【Java 8 新特性】
Java 8是一个重要的Java版本,引入了许多新特性。原创 2023-03-23 16:26:29 · 109 阅读 · 0 评论 -
【HashMap 1.7和1.8】
【HashMap 1.7和1.8】原创 2023-02-25 09:04:23 · 954 阅读 · 0 评论 -
【‘newInstance()‘ 已经过时了】
【'newInstance()' 已经过时了】原创 2022-11-09 17:24:55 · 1412 阅读 · 0 评论 -
Optional 类 - Java 8
else {} else {// orElseGet方法与orElse方法类似,但它接受一个Supplier函数式接口作为参数,该接口定义了在Optional对象为空时提供备选值的逻辑。原创 2023-04-18 16:50:48 · 430 阅读 · 3 评论 -
【String 类为什么不可变,jdk1.9前后区别】
【String 类为什么不可变,jdk1.9前后区别】原创 2023-03-09 13:08:14 · 188 阅读 · 0 评论 -
Java 8 - 组合和链式操作
【代码】Java 8 - 组合和链式操作。原创 2023-05-25 22:03:05 · 285 阅读 · 6 评论 -
Stream - 常用方法案例
【Stream流的常用方法案例】原创 2023-03-09 13:13:01 · 303 阅读 · 0 评论 -
Stream - Stream对List集合多个字段进行去重并保存最新数据(最后一条数据)
1、第一步就是先进行反转List,因为stream流去重用的是TreeSet来进行去重的, 先进行反转List就是可以把最新数据放到最前面import java.util.*;import java.util.stream.Collectors;@Testpublic void test() { ArrayList<User> objects = new ArrayList<>(); objects.add();原创 2022-05-27 14:43:11 · 8556 阅读 · 5 评论 -
Stream - Stream常用操作
package com.example.demoleetcode.demostream;import com.example.demoleetcode.demostring.User;import org.junit.jupiter.api.Test;import java.util.ArrayList;import java.util.List;import java.util.concurrent.atomic.AtomicBoolean;import java.util.stream.原创 2022-05-11 11:22:51 · 548 阅读 · 0 评论 -
Stream - Stream对List集合多字段进行分组
【Stream对List集合多字段进行分组】原创 2022-05-27 14:51:33 · 3082 阅读 · 0 评论 -
Stream - Stream分组后并计算各项之和
1、Stream分组后并计算各项之和import static java.util.Comparator.comparing;/** * 分组后并计算各项之和 */ @Test public void testGroupByAndSum() { List<User> users = new ArrayList<>(); Boolean mulFlag = true; Map<String原创 2022-05-27 15:27:22 · 11962 阅读 · 13 评论 -
Java 8 - juc - ScheduledExecutorService
【代码】Java 8 - juc - ScheduledExecutorService。原创 2023-06-02 06:15:00 · 133 阅读 · 5 评论 -
Java 8 - juc - Executor和ExecutorService
【代码】Java 8 - juc - Executor和ExecutorService。原创 2023-05-31 07:45:00 · 181 阅读 · 2 评论 -
Java 8 - 函数式接口的方法
在Java 8中,函数式接口是指只包含一个抽象方法的接口。Java 8引入了lambda表达式和函数式编程的特性,函数式接口为这种编程风格提供了基础。原创 2023-05-24 07:15:00 · 378 阅读 · 1 评论 -
Java 8 - java.util.stream - BaseStream接口
BaseStream接口定义了许多方法,用于对流进行操作和转换。super T> predicate):根据指定的条件过滤流中的元素,返回一个新的流,其中只包含满足条件的元素。super T,?extends R> mapper):对流中的每个元素进行映射操作,将其转换为另一种类型或提取特定的属性,并返回一个新的流。super T,?extends R>> mapper):将流中的每个元素映射为一个流,然后将这些流合并成一个流。常用于将嵌套的集合展平为单层流。原创 2023-05-18 21:05:13 · 171 阅读 · 0 评论 -
Java 8 - 方法引用
【代码】Java 8 - 方法引用。原创 2023-05-24 07:45:00 · 189 阅读 · 18 评论 -
Java 8 - js
在上述示例中,首先通过 ScriptEngineManager 获取 JavaScript 引擎实例。然后,使用 engine.eval() 方法执行 JavaScript 代码,即将 JavaScript 代码作为字符串参数传递给 eval() 方法。如果想在 Java 类中执行 JavaScript 代码,可以使用 javax.script 包提供的 API。原创 2023-06-06 04:30:00 · 204 阅读 · 7 评论 -
Java 8 - juc - CompletableFuture
【代码】Java 8 - juc - CompletableFuture。原创 2023-05-28 21:40:28 · 95 阅读 · 13 评论 -
Java 8 - juc - CyclicBarrier
【代码】Java 8 - juc - CyclicBarrier。原创 2023-05-30 06:15:00 · 92 阅读 · 2 评论 -
Java 8 - juc - ConcurrentLinkedQueue
【代码】Java 8 - juc - ConcurrentLinkedQueue。原创 2023-05-29 21:41:14 · 109 阅读 · 0 评论 -
Java 8 - 异常处理
【代码】Java 8 - 异常处理。原创 2023-05-26 21:43:43 · 277 阅读 · 4 评论 -
Java 8 - juc - Semaphore
【代码】Java 8 - juc - Semaphore。原创 2023-06-03 08:00:00 · 154 阅读 · 9 评论 -
Java 8 - 接口的作用
Predicate接口定义了一个抽象方法test,接收一个参数并返回一个布尔值。通过使用Lambda表达式来实现该接口的抽象方法,根据条件判断给定的数字是否大于5。通过使用Lambda表达式来实现该接口的抽象方法,根据条件判断给定的数字是否大于5。在方法内部,调用传入的predicate函数来判断给定的数字是否满足条件。通过使用函数式接口,可以轻松地将行为作为参数传递给方法或其他函数,并实现相应的功能。这种方式使得代码更加灵活、可组合和可重用,可以根据不同的需求传递不同的行为,而无需编写大量重复的代码。原创 2023-05-21 22:02:41 · 164 阅读 · 1 评论 -
Java 8 - java.util.stream - 总结
确切地说,Stream接口定义了对数据进行流式操作的方法,并提供了中间操作和终端操作,用于处理、转换和聚合数据流。super T> predicate):根据指定的条件筛选元素。super T,?extends R> mapper):将元素映射为另一种类型。super T,?extends R>> mapper):将元素映射为流,并将多个流合并成一个流。distinct():去除重复的元素。sorted():对元素进行排序。终端操作方法super T> action):对每个元素执行指定的操作。原创 2023-05-19 21:15:04 · 880 阅读 · 1 评论 -
Java 8 - juc - CountDownLatch
【代码】Java 8 - juc - CountDownLatch。原创 2023-05-29 21:40:05 · 182 阅读 · 0 评论 -
Java 8 - Optional
【代码】Java 8 - Optional。原创 2023-05-27 21:21:57 · 96 阅读 · 4 评论 -
Java 8 - Lambda表达式
【代码】Java 8 - Lambda表达式。原创 2023-05-23 07:15:00 · 85 阅读 · 11 评论 -
Java 8 - 日期和时间类
【代码】Java 8 - 日期和时间类。原创 2023-06-04 06:15:00 · 211 阅读 · 0 评论 -
Java 8 - juc - Lock和ReentrantLock
【代码】Java 8 - juc - Lock和ReentrantLock。原创 2023-06-01 03:45:00 · 154 阅读 · 4 评论 -
Java 8 - Base64-编码转换
在 Java 8 中,提供了 java.util.Base64 类来进行 Base64 编码和解码操作。在上述示例中,首先将字符串 “Hello, World!” 转换为字节数组,然后使用 Base64.getEncoder() 获取编码器并调用 encodeToString() 方法对字节数组进行编码,得到编码后的字符串。然后,使用 Base64.getDecoder() 获取解码器并调用 decode() 方法将编码后的字符串解码为字节数组,最后将字节数组转换回字符串。原创 2023-06-05 06:45:00 · 2807 阅读 · 4 评论 -
Java 8 - juc - ConcurrentHashMap
【代码】Java 8 - juc - ConcurrentHashMap。原创 2023-05-29 20:56:11 · 99 阅读 · 0 评论 -
Java 8 - 常见的函数式接口
【代码】Java 8 - java.util.function - 常见的函数式接口。原创 2023-05-22 20:49:33 · 183 阅读 · 4 评论 -
Java 8 - java.util.stream - Stream接口
确切地说,Stream接口定义了对数据进行流式操作的方法,并提供了中间操作和终端操作,用于处理、转换和聚合数据流。原创 2023-05-17 21:43:57 · 860 阅读 · 0 评论 -
Java 9 - 改进 Optional 类
【代码】Java 9 - 改进 Optional 类。原创 2023-07-25 01:15:00 · 134 阅读 · 0 评论 -
Java 9 - 改进 Process API
需要注意的是,ProcessHandle接口的方法返回的信息可能是Optional类型的,因为有些进程的信息可能无法获取(例如因为安全限制而受限),所以在使用时需要进行适当的空值处理。在Java 9中,Process API得到了一些改进,以提供更强大和灵活的处理进程的能力。原创 2023-07-24 01:00:00 · 323 阅读 · 4 评论 -
Java 11 - Unicode 10 支持
【代码】Java 11 - Unicode 10 支持。原创 2023-07-19 01:00:00 · 236 阅读 · 6 评论 -
Java 11 - 增强的 java.time API
【代码】Java 11 - 增强的 java.time API。原创 2023-07-23 01:15:00 · 115 阅读 · 0 评论