在Java 7中,最後一個列表中沒有空元素,如果我想獲得一個列表的最後一個不爲空元素,我寫的是這樣的:獲得通過使用Java 8
public CustomObject getLastObject(List<CustomObject> list) {
for (int index = list.size() - 1; index > 0; index--) {
if (list.get(index) != null) {
return list.get(index);
}
}
// handling of case when all elements are null
// or list is empty
...
}
我想寫一個通過使用lambda表達式或Java 8的另一特點。例如,如果我想先不要空元素我可以這樣寫短代碼:
public void someMethod(List<CustomObject> list) {
.....
CustomObject object = getFirstObject(list).orElseGet(/*handle this case*/);
.....
}
public Optional<CustomObject> getFirstObject(List<CustomObject> list) {
return list.stream().filter(object -> object != null).findFirst();
}
也許有人知道如何解決這個問題呢?
它不是**總是**使用lambdas的好主意。鑑於@Tunaki的答案,使用非lambda方式的讀者會更清楚。 – lschuetze
相關:[「如何在Java 8中以相反順序從列表中獲取有序流」](http://stackoverflow.com/q/29403614/2711488)和[「獲取流的最後一個元素的最有效方法「](http://stackoverflow.com/q/27547519/2711488) – Holger
@lschuetze,我只是學習lambdas的可能性,我想知道如何使用新功能來決定簡單的問題 – ZhenyaM