美文网首页Java8
Optional类的使用

Optional类的使用

作者: _MrWhite | 来源:发表于2021-02-05 15:02 被阅读0次

Optional用的比较少,大概看看就好了

package com.baifan.optional;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Stream;
import java.util.*;
import java.nio.file.*;
import java.io.*;

/**
 * @author: baifan
 * @date: 2021/2/5
 */
public class OptionalTest {

    public static void main(String[] args) throws Exception {
        String contents = new String(Files.readAllBytes(Paths.get("D:/sql/java库.sql")), StandardCharsets.UTF_8);
        List<String> wordList = Arrays.asList(contents.split("\\PL+"));

        Optional<String> optionalValue = wordList.stream()
                .filter(s -> s.contains("TABLE"))
                .findFirst();
        System.out.println(optionalValue.orElse("No word") + "contains TABLE");

        Optional<String> optionalString = Optional.empty();
        String result = optionalString.orElse("N/A");
        System.out.println("result:" + result);
        result = optionalString.orElseGet(() -> Locale.getDefault().getDisplayName());
        System.out.println("result:" + result);
        try {
            result = optionalString.orElseThrow(IllegalStateException::new);
            System.out.println("result:" + result);
        } catch (Throwable t) {
            t.printStackTrace();
        }

        optionalValue = wordList.stream()
                .filter(s -> s.contains("SELECT"))
                .findFirst();
        optionalValue.ifPresent(s -> System.out.println(s + "contains SELECT"));

        Set<String> results = new HashSet<>();
        optionalValue.ifPresent(results::add);
        Optional<Boolean> added = optionalValue.map(results::add);
        System.out.println(added);

        System.out.println(inverse(4.0).flatMap(OptionalTest::squareRoot));
        System.out.println(inverse(-1.0).flatMap(OptionalTest::squareRoot));
        System.out.println(inverse(0.0).flatMap(OptionalTest::squareRoot));
        Optional<Double> result2 = Optional.of(-4.0).flatMap(OptionalTest::inverse).flatMap(OptionalTest::squareRoot);
        System.out.println(result2);
    }

    private static Optional<Double> inverse(Double x) {
        return x == 0 ? Optional.empty() : Optional.of(1 / x);
    }

    private static Optional<Double> squareRoot(Double x) {
        return x < 0 ? Optional.empty() : Optional.of(Math.sqrt(x));
    }
}

相关文章

  • java 8 Optional

    Optional 本章内容 如何为缺失的值建模 Optional 类 应用Optional的几种模式 使用Opti...

  • Optional类的使用

    Optional用的比较少,大概看看就好了

  • Java 8 Optional入门实战

    1. 简介 本文简要介绍一下Java 8 引入的 Optional 类。引入Optional 类的主要目的是为使用...

  • 学习Optional 类

    1.介绍 Optional类是Java8为了解决null值判断问题,,使用Optional类可以避免显式的null...

  • Java 9 改进的 Optional 类

    Optional 类在 Java 8 中引入,Optional 类的引入很好的解决空指针异常。 Optional ...

  • Java8学习记录--Optional使用范例

    Java8--Optional使用范例 标签(空格分隔): java Optional是一个对象包装容器,这个类很...

  • Optional用法

    Optional用法 从 Java 8 引入的一个很有趣的特性是 Optional 类。Optional 类主要...

  • java 8中使用Optional 避免空指针

    Optional 类的引入要求程序员强制处理和避免空指针。Optional 需要使用在可能为null的变量上。很多...

  • 使用Java 8 Optional类

    从 Java 8 引入的一个很有趣的特性是 Optional 类。Optional 类主要解决的问题是空指针异常...

  • Optional类

    Optional类为Java8新引入的一个类,Optional是一个可以为null的容器对象,Optional中的...

网友评论

    本文标题:Optional类的使用

    本文链接:https://www.haomeiwen.com/subject/hjtgtltx.html