网上的Optional大多是关于jdk8的,但是在jdk9,Optional新增了很多方法,以下写一些代码示例进行记录。Optional是一个对对象进行判空操作,比较操作的工具类,
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.Optional;
import java.util.stream.Stream;
public class TestOptional {
public static void main(String[] args) {
List integers = Arrays.asList(1, 2, 3, 4, 5, 6);
Optional> op = Optional.of(integers);
//判断传入的对象是否为空
System.out.println("value是否为空:" + op.isPresent());
//filter操作,对对象进行过滤操作
boolean isPersent = op.filter(value -> {
if (value.size() > 7)
return true;
else
return false;
}).isPresent();
System.out.println("过滤之后value是否为空:" + isPersent);
//ifPresent(),如果对象为不空,则执行lambda的操作
op.ifPresent(value -> {
Iterator it = value.iterator();
while (it.hasNext()) {
System.out.println(it.next() + 1);
}
});
//创建一个空的optional
op = Optional.empty();
op.ifPresentOrElse(value -> {
Iterator it = value.iterator();
while (it.hasNext()) {
System.out.println(it.next() + 1);
}
}, () -> {
throw new NoSuchElementException("元素为空");
});
System.out.println("optional是否为空:" + op.isEmpty());
//元素为空就返回传入的值,不为空就返回自己
System.out.println("------------");
System.out.println("orElse相关操作");
List integers1 = op.orElse(integers);
op=Optional.of(integers);
//equals方法的使用示例
System.out.println("op为空的时候orElse返回的值是不是传入的值:" + op.equals(integers1));
//ofNullable方法的使用示例
op = Optional.ofNullable(null);
//or操作,如果value为空则执行lambda的操作返回一个optional
op.or(()->{
return Optional.empty();
});
//为空就执行lambda表达式返回一个值,否则就返回自己
op.orElseGet(() -> {
return integers;
});
//为空抛出错误
List integers2 = op.orElseThrow();
//为空抛出指定错误
List integers3 = op.orElseThrow(() -> {
throw new NoSuchElementException("没得嘞个元素得!");
});
//使用元素构造构造一个stream
Stream> stream = op.stream();
}
}



