java8新方法
Optional.ofNullable(list)方法
用途:list判空处理,如果list集合不为空,将list集合赋值给newList;如果list集合为空创建一个空对象集合赋值给newList,保证list集合永远不为空,也就避免了空指针异常。
list.stream().map(User::getIdcard).collect(Collectors.toList())
用途:遍历list集合,并将list集合中对象user属性idcard封装到一个新的集合中。
stream()优点:
无存储:stream不是一种数据结构,它只是某种数据源的一个视图,数据源可以是一个数组,Java容器或I/O channel等。
为函数式编程而生:对stream的任何修改都不会修改背后的数据源,比如对stream执行过滤操作并不会删除被过滤的元素,而是会产生一个不包含被过滤元素的新stream。
惰式执行:stream上的操作并不会立即执行,只有等到用户真正需要结果的时候才会执行。
可消费性:stream只能被“消费”一次,一旦遍历过就会失效,就像容器的迭代器那样,想要再次遍历必须重新生成。
拓展:Optional常用方法:
1.boolean isPresent()
如果值存在则方法会返回true,否则返回 false。
2.T orElse(T other)
如果存在该值,返回值, 否则返回 other。
3.T orElseGet(Supplier<? extends T> other)
如果存在该值,返回值, 否则触发 other,并返回 other 调用的结果。
4. <U> Optional<U> flatMap(Function<? super T,Optional<U>> mapper)
如果值存在,返回基于Optional包含的映射方法的值,否则返回一个空的Optional
5. <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier)
如果存在该值,返回包含的值,否则抛出由 Supplier 继承的异常