Java8 - OptionalLong类示例

556 阅读2分钟

java.util.OptionalLong

在java8中,OptionalLong类与OptionalInt和OptionalDouble一起被引入。这是一个可选的长值容器,可能包含也可能不包含空值或非空值。
,如果长值存在*,isPresent()方法*返回true。getAsLong()方法返回长值。OptionalLong是Optional类的一个原始长版本,而Optional是长对象的一个可选类。从java8版本开始,它被定义在java.util包中。

创建空的OptionalLong实例

empty()方法创建OptionalLong实例。isPresent()方法返回false,false意味着没有值。

OptionalLong emptyOptionalLong= OptionalLong.empty();  
System.out.println(emptyOptionalLong.isPresent()); // returns false  

创建具有非空值的OptionalLong实例

OptionalLong.of(long)方法创建一个OptionalLong实例,其中有长值。

 OptionalLong valueOptionalLong = OptionalLong.of(51);   
System.out.println(valueOptionalLong.isPresent()); // returns true

ifPresentOrElse()方法示例

ifPresentOrElse方法检查,如果值存在,在该值上应用消费者,否则为空值。

 OptionalLong optionalLongvalue = OptionalLong.of(5);   
optionalLongvalue.ifPresentOrElse((value) ->{  
System.out.println("data exists: " + value);  
}, () -> {  
System.out.println("Not exists");   
});

getAsLong()方法的例子

getAsLong()方法如果存在则返回值,否则抛出NoSuchElementException。

OptionalLong optionalLong = OptionalLong.of(20);  
System.out.println(optionalLong.getAsLong());  

输出是

20

可选长字符串示例

这是一个使用OptionalLong的Lambda表达式和诸如empty(),of(int),ifPresentOrElse()等实用方法的例子。

OptionalLong emptyOptionalLong = OptionalLong.empty();   
OptionalLong valueOptionalLong= OptionalLong.of(58);   
valueOptionalLong.ifPresentOrElse((value) -> {  
System.out.println("data exists: " + value);  
}, () -> {  
System.out.println("Not exists");   
});  
emptyOptionalLong.ifPresentOrElse((value) -> {  
System.out.println("data exists: " + value);  
}, () -> {  
System.out.println("Not exists");   
});  

data exists: 58  
Not exists  

在java8中如何将OptionalLong转换为Long

OptionalLong.getAsLong()方法返回原始的long值。下面是一个转换为原始长值的例子

long longValue =0;  
OptionalLong optionalLong = OptionalLong.of(4);  
if(optionalLong.isPresent()) {  
longValue=optionalLong.getAsLong();  
}  
System.out.println(longValue); // output 4  

输出是

4  
Not exists  

在java8中把长字符串转换成OptionalLong字符串

OptionalLong.of()方法用于创建具有非空长值的OptionalLong。
语法

public static OptionalLong of(long value)  

这个方法接收长值作为输入并返回OptionalLong对象。

long longValue = 121l;  
OptionalLong optionalLong = OptionalLong.of(longValue);  
System.out.println(optionalLong.isPresent()); // returns true    
System.out.println(optionalLong.getAsLong()); // returns 121 

在java8中OptionalLong和Optional之间的区别?

Optional.get()返回长对象
OptionalLong.getAsLong()方法返回长的原始值
IntStream和OptionalLong对象的长值有可能出现nullpointerexception
Optional和Stream的长值作为额外的封装器来避免null异常。

方法

OptionalInt提供了许多处理可用和不可用的工具。

方法说明-说明

空():

将创建一个空的OptionalLong实例。

getAsLong():

如果值存在于OptionalLong中,则返回长的值,否则出现NoSuchElementException。

ifPresent(LongConsumer consumer):

执行LongConsumer,如果值存在于OptionalLong中,否则什么都不做

isPresent():

如果值存在于OptionalLong中,返回真,否则返回假

of(long value):

创建非空值的OptionalLong,如果传入空值,则抛出NullPointerException,OptionalLong对象将不会被初始化。

orElse(long other):

如果在OptionalLong中没有显示值,返回默认值。

orElseGet(LongSupplier other):

如果值出现在OptionalLong中,返回值,否则供应商被调用,结果将被返回。

orElseThrow(Supplier exceptionSupplier):

如果在OptionalLong中提出的值,则返回值,否则供应商被调用并抛出一个错误。