
Java 8
文章平均质量分 76
Java 8 新特性介绍
猫巳
2006年《时代周刊》年度人物
2008年“感动中国年度人物”特别奖获得者
2019年度“地球卫士奖”联合获奖人
2020年感动中国特别致敬奖——抗疫英雄
2022年”奥林匹克奖杯“获奖者
展开
-
【Java 8 新特性】Java 8 新特性大全
【Java 8 新特性】目录Java Util StreamJava Util FunctionJava Util ConcurrentJava UtilJava TimeJava MathJava LangJava Util Stream【Java 8 新特性】Java Stream中forEachOrdered()和forEach()【Java 8 新特性】如何将Java流(Stream)转化成数组(Array)Java Util FunctionJava Util Concurrent原创 2020-12-13 22:13:16 · 2132 阅读 · 3 评论 -
【Java 8】终于搞懂了 Java 8 的内存结构,再也不纠结方法区和常量池了
文章目录java8内存结构图虚拟机内存与本地内存的区别JVM内存本地内存java运行时数据区域程序计数器(Program Counter Register)虚拟机栈(JVM Stacks)虚拟机栈可能会抛出两种异常:本地方法栈(Native Method Stacks)Java堆(Java Heap)方法区(Method Area)类元信息(Klass)运行时常量池(Runtime Constant Pool)直接内存常见问题什么是Native方法?成员变量、局部变量、类变量分别存储在内存的什么地方?类变量转载 2022-02-22 15:57:44 · 535 阅读 · 0 评论 -
【Java 8 新特性】Java Map computeIfPresent() 示例 | 如果计算键值存在则更新值
Java Map computeIfPresent 示例 | 如果计算键值存在则更新值例1例2例3例4参考文献computeIfPresent是java.util.Map的默认方法,已在Java 8中引入。computeIfPresent方法为给定的键及其相关的值计算一个指定的映射函数,然后如果指定的键的值是存在的并且不是空的,则更新该键的值。从Java文档中找到该方法的声明。default V computeIfPresent(K key, BiFunction<?原创 2021-09-17 10:58:54 · 7685 阅读 · 0 评论 -
【Java 8 新特性】Java Map computeIfAbsent() 示例 | 如果计算键值不可用则插入新值
Java Map computeIfAbsent 示例 | 如果计算键值不可用则插入新值例1例2例3例4参考文献computeIfAbsent是java.util.Map的默认方法,已在Java 8中引入。computeIfAbsent方法在与指定键相关的值不可用或为空时起作用,在这种情况下,computeIfAbsent方法为该键输入由给定映射函数计算的新值。从Java文档中找到该方法的声明。default V computeIfAbsent(K key, Function<? super原创 2021-09-17 10:44:33 · 10226 阅读 · 0 评论 -
【Java 8 新特性】Java Map compute() 示例 | 指定 key 的值进行计算后替换
Java Map compute 示例 | 指定 key 的值进行计算后替换例1例2例3例4参考文献compute是java.util.Map的默认方法,已在Java8中引入。compute方法尝试计算指定键及其当前映射值的映射。从Java文档中查找方法声明。default V compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction) key是要关联指定值的键。remappingFun原创 2021-09-17 09:54:26 · 920 阅读 · 0 评论 -
【Java 8 新特性】Java Map replace() 示例 | 替换 Map 中指定 key 的值
Java Map replace 示例 | 替换 Map 中指定 key 的值参考文献replace是java.util.Map的默认方法,在Java 8中被引入。只有当指定的键当前被映射到某个值时,替换方法才会替换该键的入口值。replace方法使用以下参数。1. 替换指定键的值。default V replace(K key, V value) 该key是需要更改其关联值的指定键。该value是要放入的新值。replace方法返回旧值,如果没有与指定键关联的值,则返回null。2.原创 2021-09-16 15:51:32 · 15816 阅读 · 1 评论 -
【Java 8 新特性】Java Map replaceAll() 示例 | 根据函数替换Map中所有条目的值
Java Map replaceAll 示例 | 根据函数替换Map中所有条目的值参考文献replaceAll是java.util.Map的默认方法,在Java 8中被引入。replaceAll方法接受BiFunction作为一个参数。replaceAll方法将每个条目的值替换为对该条目调用指定函数的结果。replaceAll方法对Map的每个条目都起作用,如果指定的函数对任何条目都产生异常,则该方法停止。从Java文档中找到该方法的声明。default void replaceAll(BiFu原创 2021-09-16 15:26:04 · 3872 阅读 · 0 评论 -
【Java 8 新特性】Java Map getOrDefault() 示例 | Map获取值为空则取默认值
@[TOC](Java Map getOrDefault() 示例 | Map获取值为空则取默认值)getOrDefault是java.util.Map的默认方法,在Java 8中被引入。getOrDefault方法返回给定键的值,如果没有与该键相关的值,那么将返回指定的默认值。找到该方法的签名。default V getOrDefault(Object key, V defaultValue) key: 要获得该值的键。defaultValue: 默认值。返回值是一个与键相关的值,如果没有原创 2021-09-16 15:07:24 · 4672 阅读 · 0 评论 -
【Java 8 新特性】Java List sort() 排序示例 | 列表自定义排序
@[TOC](Java List sort() 排序示例 | 列表自定义排序)sort是java.util.List接口的默认方法。List的排序方法在Java 8中被引入。1. 排序方法接受比较器作为参数,并根据指定的比较器对这个列表进行排序。default void sort(Comparator<? super E> c) 2. 如果List中的元素是可比较的,即元素类实现了Comparable接口,那么我们可以把null传给sort方法,排序将按照自然排序进行。3. 列表不原创 2021-09-16 14:56:20 · 21913 阅读 · 0 评论 -
【Java 8 新特性】Java Comparator 在 SortedMap 中使用 | TreeMap 和 ConcurrentSkipListMap 排序
Java Comparator 在 SortedMap 中使用 | TreeMap 和 ConcurrentSkipListMap 排序在 TreeMap 中使用在 ConcurrentSkipListMap 中使用参考文献Java比较器可以用来控制SortedMap数据结构的键的顺序。SortedMap的实现类是TreeMap和ConcurrentSkipListMap。我们可以将比较器实例传递给TreeMap和ConcurrentSkipListMap类的构造函数以控制其键的顺序。SortedM原创 2021-09-16 14:43:30 · 807 阅读 · 0 评论 -
【Java 8 新特性】Java Comparator 在 SortedSet 中使用 | TreeSet 和 ConcurrentSkipListSet 排序
Java Comparator 在 SortedSet 中使用 | TreeSet 和 ConcurrentSkipListSet 排序在 TreeSet 中使用在 ConcurrentSkipListSet 中使用参考文献Java比较器可以用来控制SortedSet数据结构的顺序。SortedSet的实现类是TreeSet和ConcurrentSkipListSet。我们可以将比较器实例传递给TreeSet和ConcurrentSkipListSet类的构造函数以控制其顺序。SortedSet提供原创 2021-09-16 14:32:34 · 680 阅读 · 0 评论 -
【Java 8 新特性】Java Comparator.naturalOrder | 自然排序
Java Comparator.naturalOrder | 自然排序与 Stream.sorted 一起使用与 Collections.sort 一起使用与 List.sort 一起使用与 Arrays.sort 一起使用参考文献naturalOrder是比较器功能接口的静态方法。Java 8中引入的Comparator.naturalOrder方法返回一个比较器,该比较器以自然顺序比较可比较对象。对于自然排序,一个类需要实现Comparable并定义compareTo方法。一个对象的集合根据co原创 2021-09-16 10:55:40 · 10856 阅读 · 5 评论 -
【Java 8 新特性】Java Comparator.nullsLast | 将空元素被认为大于非空元素
nullsLast是比较器功能接口的静态方法。在Java 8中引入的Comparator.nullsLast方法返回一个对null友好的比较器,认为null大于非null。从Java源代码中找到它的声明。static <T> Comparator<T> nullsLast(Comparator<? super T> comparator) 找到由nullsLast方法返回的比较器的工作原理。1. 空元素被认为是大于非空元素的。2. 当两个元素都是空的时候,那原创 2021-09-16 10:34:07 · 19637 阅读 · 0 评论 -
【Java 8 新特性】Java Comparator.nullsFirst | 将空元素被认为小于非空元素
nullsFirst是比较器功能接口的静态方法。Java 8中引入的Comparator.nullsFirst方法返回一个对null友好的比较器,认为null小于非null。从Java源代码中找到它的声明。static <T> Comparator<T> nullsFirst(Comparator<? super T> comparator) 找到由nullsFirst方法返回的比较器的工作原理。1. 空元素被认为小于非空元素。2. 当两个元素都是空的时候,原创 2021-09-16 10:23:33 · 10880 阅读 · 0 评论 -
【Java 8 新特性】Java Comparator.thenComparing | 添加次级排序方式
Java Comparator.thenComparing | 添加次级排序方式Comparator.thenComparingComparator.thenComparingIntComparator.thenComparingLongComparator.thenComparingDouble参考文献thenComparing是比较器功能接口的默认方法。Comparator.thenComparing方法是在Java 8中引入的。Comparator.thenComparing返回一个词表顺序的比原创 2021-09-16 10:10:21 · 21894 阅读 · 0 评论 -
【Java 8 新特性】Java Comparator.comparing | 提取对象属性,按照指定规则排序
Java Comparator.comparing | 提取对象属性,按照指定规则排序Comparator.comparingComparator.comparingIntComparator.comparingLongComparator.comparingDouble参考文献comparing是比较器功能接口的静态方法。Comparator.comparing方法在Java 8中被引入。Comparator.comparing接受一个函数,该函数从给定类型中提取一个可比较的排序键,并返回一个通过该原创 2021-09-14 14:41:34 · 33747 阅读 · 4 评论 -
【Java 8 新特性】Java Comparator.reverseOrder | 倒序排序-静态方法
Java Comparator.reverseOrder | 倒序排序-静态方法在 Stream.sorted 中使用在 Collections.sort 中使用在 List.sort 中使用在 Arrays.sort 中使用参考文献Comparator.reverseOrder是Java 8中引入的一个静态方法,它返回比较器,对对象集合进行反向自然排序。对于自然排序,一个类需要实现Comparable并定义compareTo方法。一个对象集合根据自然排序中的compareTo进行排序。Compar原创 2021-09-14 13:57:03 · 17216 阅读 · 0 评论 -
【Java 8 新特性】Java Comparator.reversed | 倒序排序 - 默认方法
reversed是Java比较器功能接口的默认方法。这个方法是在Java 8中引入的。reversed返回一个比较器,这个比较器的排序是反向的。它被声明如下。default Comparator<T> reversed() 要使用reversed方法,我们需要实例化我们的比较器并调用该方法。reversed将返回新的比较器实例,该实例将强加该比较器的反向排序。Comparator<Student> nameComparator = (s1, s2) -> s1.原创 2021-09-14 13:43:17 · 17055 阅读 · 1 评论 -
【Java 8 新特性】Java Comparator | 比较器
Java Comparator | 比较器比较器功能方法:compare(T o1, T o2)1. 使用 Lambda 表达式定义 compare2. 自定义 compare 实现比较器比较器的使用Stream.sortedCollections.sortList.sortArrays.sort比较器的方法1. reversed2. reverseOrder3. naturalOrder4. nullsFirst5. nullsLast6. comparing7. comparingIntJava ja原创 2021-09-14 13:27:55 · 30322 阅读 · 1 评论 -
【Java 8 新特性】Java Random | 获取随机数
Java Random | 获取随机数RandomSecureRandomThreadLocalRandomMath.random()参考文献本页将通过Java.util.Random实例进行讲解。Java Random类生成一个伪随机数流。随机类使用48位(48-bit)种子。Random的实例是线程安全的,但是Random的并发使用性能很差。我们可以在并发环境中使用ThreadLocalRandom。随机的实例在密码学上是不安全的。我们可以使用SecureRandom来获得密码学上安全的伪原创 2021-09-13 16:17:01 · 4099 阅读 · 0 评论 -
【Java 8 新特性】Java 8 汇总统计示例 | 最大值、最小值、平均值、总数、合计
Java 8 汇总统计示例 | 最大值、最小值、平均值、总数、合计汇总统计方法DoubleSummaryStatistics 和 Collectors.summarizingDouble()IntSummaryStatistics 和 Collectors.summarizingInt()LongSummaryStatistics 和 Collectors.summarizingLong()基本数据类型的汇总统计示例对象的汇总统计示例参考文献在这个页面上,我们将提供java 8汇总统计的例子。我们可以一原创 2021-09-13 15:33:46 · 5644 阅读 · 0 评论 -
【Java 8 新特性】Java 8 数组并行更新示例 | 数组部分更新
Java 8 数组并行更新示例 | 数组部分更新Arrays.parallelPrefix() 在对象数组使用Arrays.parallelPrefix() 在基本数据类型数组使用参考文献在这一页,我们将提供java 8 Arrays parallel prefix的例子。Arrays.parallelPrefix()在给定的运算符的基础上更新数组。假设我们有一个[2,1,3,5]的数组,我们正在执行加法运算,那么结果将是[2,3,6,11]。我们传递的运算符是BinaryOperator,IntB原创 2021-09-13 15:04:18 · 918 阅读 · 0 评论 -
【Java 8 新特性】Java 8 数组并行排序示例 | 数组部分排序
在这一页,我们将提供java 8 Arrays并行排序的例子。Java 8在数组类中引入了一个新方法 parallelSort()。1. Java 8 Arrays.parallelSort()使用并行排序-合并(sort-merge)算法,将数组分解为子数组,然后对它们本身进行排序和合并。2. 数组被分解为子数组,子数组再次被分解为另一个子数组,一直持续到子数组的长度达到最小颗粒度。3. 经过多次分割后,一旦子数组达到最小粒度,就用Arrays.sort()对它们进行排序。4. Arrays.s原创 2021-09-10 10:11:52 · 2405 阅读 · 0 评论 -
【Java 8 新特性】List列表元素常用操作 - 循环forEach、删除 removeIf、替换replaceAll和排序sort
List 中 forEach, removeIf, replaceAll 和 sort 用法介绍forEach()removeIf()replaceAll()sort()参考文献在这一页,我们将提供java 8 List例子,包括forEach(), removeIf(), replaceAll()和sort()。List中的forEach()方法继承自java.lang.Iterable,removeIf()方法继承自java.util.Collection。所有这些方法都是在Java 8中添加的。原创 2021-09-09 16:41:16 · 3987 阅读 · 0 评论 -
【Java 8 新特性】Java 8 Random 和 SecureRandom 新变化详解 | 生成随机字符串
在java 8中,在Random和SecureRandom类中增加了一些新方法。这些方法就像ints、longs和double一样。它们分别返回IntStream、LongStream和DoubleStream。SecureRandom类扩展了Random类。在这个页面中,我将提供一个密码生成器的例子。java.util.RandomRandom类产生伪随机数。对于每个实例的调用,都会返回一个伪随机数。Random类是线程安全的。Random类有一些支持Java 8的新方法。ints:原创 2021-09-09 16:10:54 · 2254 阅读 · 0 评论 -
【Java 8 新特性】Java 8 Util API: StringJoiner 详解 | 拼接字符串添加分隔符、前缀和后缀
Java 8 Util API: StringJoiner 详解StringJoiner(CharSequence d)StringJoiner.add(CharSequence element)StringJoiner(CharSequence d, CharSequence p, CharSequence s)StringJoiner.merge(StringJoiner other)StringJoiner.length()参考文献java 8中引入了java.util.StringJoiner。原创 2021-09-09 15:48:14 · 2470 阅读 · 0 评论 -
【Java 8 新特性】Java 8 Optional 详解 | 避免 NullPointerException
Java 8 Optional 详解 | 避免 NullPointerExceptionOptional.of()Optional.map()Optional.orElse()Optional.flatMap()Optional.filter()Optional.ifPresent()Optional.isPresent()参考文献java.util.Optional类在java 8中被引入,这将避免我们代码中的NullPointerException。我们可以用更少的行来写我们的代码,因为现在我们将不原创 2021-09-09 15:10:57 · 663 阅读 · 0 评论 -
【Java 8 新特性】Java LocalDateTime 和 Instant 互相转换
本页将提供如何在Java LocalDateTime和Instant之间转换。LocalDateTime表示没有时区的日期时间,如2019-10-25T12:15:30,而Instant是时间线上的一个瞬时点。我们可以通过以下方式在Java LocalDateTime和Instant之间进行转换。1. 使用LocalDateTime.toInstant()方法将LocalDateTime转换为Instant。Instant instant = localDateTime.toInstant(Zone原创 2021-09-07 16:48:33 · 15193 阅读 · 1 评论 -
【Java 8 新特性】Java LocalDate 和 Epoch 互相转换
此页面将提供在Java LocalDate和Epoch之间转换的示例。Epoch是用作特定日历时代起源的时间瞬间。Epoch是测量时间的参考点。LocalDate的纪元参考点是1970-01-01,格式为YYY-MM-DD。当我们把一个LocalDate如2019-11-15转换成纪元日时,那么结果将是1970-01-01到2019-11-15的天数。同样,当我们把18215这样的纪元日转换为LocalDate时,所得到的LocalDate将由1970-01-01加上18215天而得到。1.找到原创 2021-09-07 15:57:06 · 2572 阅读 · 0 评论 -
【Java 8 新特性】Java LocalDateTime 和 Epoch 互相转换
Java LocalDateTime 和时间戳互相转换1. LocalDateTime 转 Epoch1.1 LocalDateTime 转纪元秒1.2 LocalDateTime 转纪元毫秒2. Epoch 转 LocalDateTime2.1 使用 LocalDateTime.ofEpochSecond() 将 Epoch 转换为 LocalDateTime2.2 使用 Instant 将 Epoch 转换为 LocalDateTime2.3 使用 Timestamp 将 Epoch 转换为 Local原创 2021-09-07 10:04:59 · 9180 阅读 · 0 评论 -
【Java 8 新特性】Java LocalDateTime 和 Date 互相转换
在Java LocalDateTime和Date之间进行转换1. LocalDateTime 转 Date示例2. Date 转 LocalDateTime示例参考文献本页将提供从Java java.time.LocalDateTime到java.util.Date以及从java.util.Date到java.time.LocalDateTime的转换实例。Java 8中引入的LocalDateTime是没有时区的日期时间。Date表示一个特定的时间瞬间,精度为毫秒。1. LocalDateTime原创 2021-09-07 09:22:19 · 17239 阅读 · 0 评论 -
【Java 8 新特性】Java DateTimeFormatter 日期时间格式化器
Java DateTimeFormatter 日期时间转化器实例化 DateTimeFormatter示例FormatStyle:DateTimeFormatter format() 和 formatTo()。示例格式化 LocalDate格式化 LocalDateTime格式化 LocalTimeDateTimeFormatter "parse" 方法DateTimeFormatter "with" 方法# DateTimeFormatter "get" 方法将DateTimeFormatter转换为Fo原创 2021-09-06 15:48:58 · 85132 阅读 · 3 评论 -
【Java 8 新特性】Java LocalDate 转 Instant 和 Timestamp
Java LocalDate 转 Instant 和 Timestamp1. LocalDate 转 Instant1.1 使用 LocalDate.atTime1.2. 使用 LocalDate.atStartOfDay1.3. 使用 LocalDateTime.of2. LocalDate 转 Timestamp3. Timestamp 转 Instant完整示例参考文献在这一页,我们将提供如何将java.time.LocalDate转换成java.time.Instant和java.sql.Time原创 2021-09-06 13:53:21 · 6293 阅读 · 0 评论 -
【Java 8 新特性】Java LocalDate 转 Date
Java LocalDate 转 Date1. 使用 LocalDate.atTime2. 使用 LocalDate.atStartOfDay3. 使用 LocalDateTime.of4. 使用 Timestamp.valueOf完整示例参考文献在这一页,我们将提供如何将java.time.LocalDate转换成java.util.Date。LocalDate表示一个格式为yyyy-MM-dd的日期,如2019-05-08。我们可以使用以下方法和构造函数来创建一个Date对象。1. Date.f原创 2021-09-06 13:31:33 · 28323 阅读 · 0 评论 -
【Java 8 新特性】Java LocalDate 格式转化
Java LocalDate 格式转化用 LocalDate.format() 格式化 LocalDate用`DateTimeFormatter.format()`格式化`LocalDate`参考文献我们可以使用LocalDate或DateTimeFormatter的format()方法将LocalDate格式化为字符串。Java 8中引入的LocalDate表示yyyy-MM-dd格式的日期,如2019-05-08。它不存储时间或时区。我们可以使用DateTimeFormatter将LocalDa原创 2021-09-06 11:21:52 · 24532 阅读 · 0 评论 -
【Java 8 新特性】Java LocalDate 详解
Java LocalDate 详解LocalDate - 初始化plus - 按给定数量增加日期值minus - 按给定数量减去日期值with - 调整日期get - 获取日期信息LocalDate format() 转换格式atTime() - 将 LocalDate 与时间结合转化为 LocalDateTimeatStartOfDay() 将 LocalDate 转化为 LocalDateTimeLocalDate isAfter(), isBefore() and isEqual() 比较日期Loca原创 2021-06-13 18:28:16 · 61830 阅读 · 2 评论 -
【Java 8 新特性】Java Clock tick() 设置时间最小跳动间隔
Clock.tick获得一个时钟,它返回从指定时钟截断到最近出现的指定持续时间的实例。截断的时刻将小于接近指定持续时间的实际时刻,最小的时间单位是指定的时间单位。获得的时钟将只按照指定的持续时间进行滴答(tick)1。从Java文档中找到tick的方法签名。public static Clock tick(Clock baseClock, Duration tickDuration) 其中,baseClock是滴答时钟所依据的基础时钟。tickDuration是每个可见刻度的持续时间。滴答持续原创 2021-06-13 16:33:28 · 2554 阅读 · 1 评论 -
【Java 8 新特性】Java Clock fixed() 设置固定时钟
文章目录Clock.fixed 方法示例在 Offset 使用 Clock.fixed 方法参考文献Java Clock.fixed返回一个固定的时钟,总是给出相同的瞬间。固定时钟只是返回指定的瞬间。固定时钟的主要用例是在测试中,固定时钟确保测试不依赖于当前时钟。从Java文档中找到Clock.fixed声明。public static Clock fixed(Instant fixedInstant, ZoneId zone) 我们需要传递instant和zone,并将返回具有固定瞬间的时钟原创 2021-06-13 16:03:40 · 749 阅读 · 0 评论 -
【Java 8 新特性】Java Clock offset() 给时钟添加指定持续时间
Java Clock.offset获取一个时钟,从指定的时钟中返回添加了指定持续时间的实例。如果持续时间为负数,则该时刻将比当前时刻早。Clock.offset可以用来获得一个时钟,它将给出过去或未来的瞬间。如果我们传递零持续时间,我们将得到基础时钟。在Java文档中找到Clock.offset的方法声明。public static Clock offset(Clock baseClock, Duration offsetDuration) 其中,baseClock是将被添加或减去持续时间的时原创 2021-06-13 15:48:23 · 2335 阅读 · 1 评论 -
【Java 8 新特性】Java Clock millis() 获取时间戳
Java Clock.millis获得当前时钟的毫秒数。millis方法返回从1970-01-01T00:00Z (UTC)测量的基于当前时钟的毫秒数。millis等同于System.currentTimeMillis()的定义。为了得到时间线上的一个瞬间,我们应该使用Instant而不是millis。根据Java,我们应该只在高性能的用例中使用millis,在这种情况下,创建一个对象是不可接受的。在Java文档中找到Clock.millis的声明。public long millis()原创 2021-06-13 15:26:30 · 1509 阅读 · 0 评论