JDK9-15的新特性

简介: JDK 9增加 了 List.of()、Set.of()、Map.of() 和 Map.ofEntries()等工厂方法来创建不可变集合,类似于ImmutableMap.of()静态方法。不可变集合不能进行添加、删除、替换、 排序等操作,不然会报java.lang.UnsupportedOperationException 异常。

JDK9-15的新特性

内容学习自知秋老师的翻译课程

JDK 9增加 了 List.of()、Set.of()、Map.of() 和 Map.ofEntries()等工厂方法来创建不可变集合,类似于ImmutableMap.of()静态方法。不可变集合不能进行添加、删除、替换、 排序等操作,不然会报java.lang.UnsupportedOperationException 异常。
Collectors 中增加了新的方法 filtering() 和 flatMapping()。
Collectors 的 filtering() 方法类似于 Stream 类的 filter() 方法,都是用于过滤元素。
JDK 9 Stream 中增加了新的方法 ofNullable()、dropWhile()、takeWhile() 以及 iterate() 方法的重载方法。
Java 9 中的 ofNullable() 方 法允许我们创建一个单元素的 Stream,可以包含一个非空元素,也可以创建一个空 Stream。而在 Java 8 中则不可以创建空的 Stream 。

copyOf方法

代码示例

package com.wxit.api;

import java.util.ArrayList;
import java.util.List;

/**
 * @author wj
 * @date 2021.09.25 09:49
 */
public class CopyOfApiDemo {

    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        names.add("吴杰");
        names.add("婷姐");
        names.add("佳伟");

        List<String> copyOfNames = List.copyOf(names);
        doNotChange(copyOfNames);
        System.out.println(copyOfNames);
    }

    private static void doNotChange(List<String> copyOfNames) {
        copyOfNames.add("子龙");
    }
}

jdk11中引进的方法writeString 和 readString

代码示例

package com.wxit.api;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

/**
 * @author wj
 * @date 2021.09.26 20:58
 */
public class FileReadWriteRunner {

    /*
    可以看到,使用这些特定的新方法,readString 和 writeString 使得从文件中读取可写入变的更加容易
     */
    public static void main(String[] args) throws IOException {
        Path path = Paths.get("./resource/sample.txt");
        String fileContent = Files.readString(path);
        System.out.println(fileContent);

        String newFileContent = fileContent.replace("wujie", "xiaohao");
        Path newFilePath = Paths.get("./resource/sample-new.txt");
        Files.writeString(newFilePath,newFileContent);
    }
}

jdk11中引进的Predicate.not方法

代码示例

package com.wxit.api;

import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Stream;

/**
 * @author wj
 * @date 2021.09.26 21:16
 */
public class PredicateNotRunner {

    public static void main(String[] args) {
        List<Integer> numbers = List.of(12,25,36,24,13,125);
        Predicate<Integer> evenNumberPredicate = number -> number % 2 ==0;
//        Stream<Integer> integerStream = numbers.stream().filter(evenNumberPredicate);
//        integerStream.forEach(s -> System.out.println(s));

        numbers.stream().filter(evenNumberPredicate.negate()).forEach(System.out::println);

    }
}
相关文章
|
2月前
|
安全 JavaScript 前端开发
JDK1.8的重要的新特性与功能
Java Development Kit (JDK) 1.8,也称为Java 8,是Java平台的一个重大更新,于2014年3月发布。它引入了多项新特性、新的API和性能提升
73 3
|
3月前
|
监控 安全 Java
探索Java的未来:JDK 18新特性全览
探索Java的未来:JDK 18新特性全览
80 0
|
3月前
|
缓存 安全 Java
JDK 14全景透视:每个Java开发者必知的新特性
JDK 14全景透视:每个Java开发者必知的新特性
54 0
|
3月前
|
JavaScript 前端开发 安全
Java新纪元:一探JDK 15的全新特性
Java新纪元:一探JDK 15的全新特性
46 0
|
3月前
|
JSON Java API
探秘JDK 13的黑科技:新特性一览
探秘JDK 13的黑科技:新特性一览
51 0
|
3月前
|
Java 测试技术 API
深度剖析JDK 11全新特性:编程艺术的巅峰之作
深度剖析JDK 11全新特性:编程艺术的巅峰之作
47 0
|
3月前
|
存储 Java 数据管理
探秘JDK 10:崭新特性悉数解析
探秘JDK 10:崭新特性悉数解析
31 0
|
3月前
|
JSON 编解码 Java
Java升级:JDK 9新特性全面解析“
Java升级:JDK 9新特性全面解析“
46 0
|
3天前
|
算法 Java 编译器
升级指南之JDK 11+ 新特性和AJDK
本文详细介绍了JDK个版本之间的特性、区别以及JDK版本更迭时优化了哪些地方,对JDK的版本选择给出了建议,以及升级教程。
|
9天前
|
存储 安全 Java
JDK22发布了!来看看有哪些新特性
以上是介绍 JDK22新特性的全部内容了,突然V哥想要感慨一下,技术之路,学无止境,选择 IT 技术,作个纯粹的人,享受研究技术的过程,这种带来的快感,也许只有真正热爱编程的人才能有体会。