java8 - 10个`Optional` 类实例

387 阅读3分钟

java8 - Top 10 Optional Class Examples

现在你对Optional类的基础知识和用法有了了解。

optional 类是一个容器对象,用于存放nullnot null 值。

下面是Optional 类的使用实例。

如何在java8中把List转换为Optional?

  • 首先,使用Arrays.asList()方法将数组转换为列表。
  • Optional.of(list) 方法创建 列表,其中有非空值。Optional
  • 这就把列表转换为可选列表。
  • 使用ifPresent() 方法和lambda表达式,返回Optional List的大小。

下面是一个例子

 import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;

public class Test {
    public static void main(String[] args)  throws Exception{
        Integer[] numbersArray = { 1, 2, 3, 4, 5, 6, 7 };
        List<Integer> integers = new ArrayList<>(Arrays.asList(numbersArray));
        Optional<List<Integer>> listIntegersOptional = Optional.of(integers);
        listIntegersOptional.ifPresent((list) -> {
            System.out.println(list.size()); // output
        });

    }
}

如何将列表转换为java8的列表?

这是一个在java8中将List转换为List的例子。

使用stream() 与lambda表达式,在Optional 类中使用collect 方法映射每个元素和Wrap。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

public class CovertOptionalList {
    public static void main(String[] args)  throws Exception{
        Integer[] numbersArray = { 1, 2, 3, 4, 5, 6, 7 };
        List<Integer> integerList = new ArrayList<Integer>(Arrays.asList(numbersArray));
        List<Optional<Integer>> listOptionalIntegers =
                integerList.stream()
                        .map(Optional::ofNullable)
                        .collect(Collectors.toList());
    }
}

如何将可选字符串转换为字符串

首先,使用ofNullable 方法创建一个Optional字符串。

或者,你可以使用of() 方法创建Optional实例。

java8中Of()和ofNullable()的区别

of() null``ofNullable() ,如果值是null ,则返回 Empty可选实例。

一旦创建了实例,get() 方法会将可选字符串转换为字符串对象。

import java.util.Optional;

public class Test {
    public static void main(String[] args)  throws Exception{
        Optional<String> optionalString1=Optional.ofNullable("testoptionalstring");
        String string=optionalString1.get();
        System.out.println(string);
    }
}

如何将字符串转换为可选字符串

ofNullable() 方法将普通的Object转换为Optional Object类型。

import java.util.Optional;

public class ConvertOptionalString {
    public static void main(String[] args)  throws Exception{
        String str="kiran";
        Optional<String> optionalString=Optional.ofNullable(str);
        System.out.println(optionalString.isPresent());
        optionalString.ifPresent(value->{
            System.out.println(value);
        });
    }
}

下面的例子解释了用法和转换。

在java8中,如何将可选字符串转换为对象类型的流?

Optional Stream 类是一个用于处理数据的聚合结果的容器。

这是一个在java8中将 Optional转换为Stream 的例子。

import java.util.Optional;
import java.util.stream.Stream;

public class OptionalStreamExample {
    public static void main(String[] args)  throws Exception{
        String str="kiran";
        Optional<String> optionalString=Optional.ofNullable(str);
        Stream<String> streamString = optionalString.isPresent() ? Stream.of(optionalString.get()) : Stream.empty();

    }
}

如何将java8中的Optional转换为Optional?

  • 首先,使用ofNullable() 方法创建Optional Integer。
  • 使用isPresent()方法检查值是否存在,如果值存在,使用get() 方法获取值并转换为长值,将其传递给Optional.ofNullable() ,创建一个Optional Long对象。
import java.util.Optional;

public class OptionalIntegerToLongExample {
    public static void main(String[] args)  throws Exception{
        Optional<Integer> optionalInteger=Optional.ofNullable(123);
        Optional<Long> optionalLong = Optional.ofNullable(optionalInteger.isPresent() ?
                optionalInteger.get().longValue() : null);
    }
}

在java8中把两个或多个可选字符串串联成可选字符串

这是一个关于Optional及其实用方法的简单使用方法。

import java.util.Optional;

public class Test {
    public static void main(String[] args)  throws Exception{
        Optional<String> one = Optional.ofNullable("one");
        Optional<String> two = Optional.ofNullable("two");
        Optional<String> output;
        output = one.isPresent() && two.isPresent() ? Optional.of(one.get() + two.get()) : Optional.empty();
        System.out.println(output.get());

    }
}

输出

onetwo  

如何从ArrayList中移除空的null可选值?

首先创建一个ArrayList,其中有null、empty和not null等可选值。
我们将使用过滤器、地图、收集器与lambda表达式从数组中移除空/空值。

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

public class Test {
    public static void main(String[] args)  throws Exception{
        List<Optional<String>> listOptionalStrings = new ArrayList<>();
        listOptionalStrings.add(Optional.of("one"));
        listOptionalStrings.add(Optional.empty());
        listOptionalStrings.add(Optional.of("two"));
        listOptionalStrings.add(Optional.of("three"));
        listOptionalStrings.add(Optional.empty());
        listOptionalStrings.add(Optional.of("four"));
        listOptionalStrings.add(Optional.ofNullable(null));
        List<String> stringList = listOptionalStrings.stream()
                .filter(Optional::isPresent)
                .map(Optional::get)
                .collect(Collectors.toList());
        stringList.forEach((value) -> {
            System.out.println(value);
        });
    }
}

输出

one  
two  
three  
four  

结论

你在Optional类中学习了多个例子,并有一个逐步的指导。