在只有一个元素的列表上调用 stream().reduce()
2022-09-03 09:49:13
我是Java函数式编程的新手,并且想知道我应该如何编码以避免(例如)此操作中的NPE:
myList.stream()
.reduce((prev, curr) -> prev.getTimestamp().isAfter(curr.getTimestamp()) ? prev : curr);
.get().getTimestamp();
我在这里的目的是在列表中查找最新对象的时间戳。关于如何更好地收集最后一个元素的建议非常受欢迎,但我在这里的主要问题实际上是为什么这有效。
文档说该函数抛出“如果减少的结果是空的”:NullPointerException
这没关系,但我不太明白的是,当此代码在仅使用一个元素的列表运行时,为什么我没有得到一个。在这种情况下,我预计为空。我尝试调试,但是当只有一个元素时,它似乎只是单步执行整个lambda表达式。NullPointerException
prev