【发布时间】:2015-01-23 07:06:27
【问题描述】:
我是java函数式编程的新手,想知道我应该如何编写代码以避免(例如)这个操作中的NPE:
myList.stream()
.reduce((prev, curr) -> prev.getTimestamp().isAfter(curr.getTimestamp()) ? prev : curr);
.get().getTimestamp();
我的目的是在列表中找到最新对象的时间戳。非常欢迎关于如何更好地收集最后一个元素的建议,但我的主要问题实际上是为什么这样做。
文档说该函数抛出NullPointerException“如果减少的结果为空”:
没关系,但我不太明白为什么当此代码使用仅包含一个元素的列表运行时,我没有得到NullPointerException。在这种情况下,我希望 prev 为空。我试过调试,但当只有一个元素时,它似乎只是跨过了整个 lambda 表达式。
【问题讨论】:
标签: java collections null functional-programming java-8