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中提出的值,则返回值,否则供应商被调用并抛出一个错误。