-
Optional类是什么
Optional 类是Java8引入,目的是用于解决空指针异常问题
可包含对象、可为空 -
Optional类怎么用
//Optional学习
public static void main(String[] args) {
String s = null;
// 创建Optional对象
Optional EMPTY = Optional.empty();
System.out.println(EMPTY);
Optional optional = Optional.ofNullable(s);
/**
* Optional.of(null) : 抛异常
* Optional.ofNullable(null) : 不会抛异常,就建一个null
*
* optional.get() : 如果是null,直接get会抛异常
* optional.orElse(如果value是null,else输出的结果)
* optional.orElseGet() :和orElse类似,差异在于返回结果对应非空值时,orElse创建对象,orElseGet不创建对象,性能差异。
* optional.isPresent() :判断变量是否存在,,存在返回TRUE
* optional.ifPresentOrElse(result1,result2):如果存在输出结果1,不存在输出结果2
*
*/
System.out.println(optional.orElse("s is null"));
System.out.println((optional.isPresent() ? optional.get() : "s is null"));
}
- Stream流里的Optional对象
List<User> userList = new ArrayList<>();
userList.add(new User(3));
userList.add(new User(5));
userList.stream()
.mapToInt(user -> user.age)
.max()
.getAsInt();
List<String> stringList = Arrays.asList("1", "2", "3");
System.out.println(stringList.stream()
.map(Integer::parseInt).max(Integer::compareTo).get());
int[] ints = stringList.stream()
.mapToInt(Integer::parseInt)
.toArray();
long[] longs = stringList.stream()
.mapToLong(Long::parseLong)
.toArray();
double[] doubles = stringList.stream()
.mapToDouble(num -> Double.parseDouble(num))
.toArray();