Использование нескольких функций карты против оператора блока в карте в потоке java
Скажем, у меня есть следующий код
data.stream()
.map(x -> {
Object a = maybeReturnsNull(x);
return a == null ? defaultValue : a;
})
У меня есть функция, которая может возвращать null
, и я применяю ее к элементу потока. Затем я хочу убедиться, что любой результат null
будет изменен на некоторое значение по умолчанию. Есть ли существенная разница между использованием двух карт, как в следующем примере, по сравнению с использованием предыдущего примера, который определяет вспомогательную переменную a
и использует блок кода в выражении лямбда?
data.stream()
.map(x -> maybeReturnsNull(x))
.map(x -> x == null ? defaultValue : x)
Есть ли стандарт на то, где или нет, чтобы избежать использования операторов блока с лямбда-функциями?
Ответы
Ответ 1
Либо все нормально. Выберите тот, который кажется вам более читаемым. Если вычисление естественным образом разлагается, как это делается, то множественные карты, вероятно, более читабельны. Некоторые вычисления естественно не разлагаются, и в этом случае вы застряли в первом. В любом случае вы не должны беспокоиться о том, что один из них значительно более эффективен, чем другой; что в значительной степени не рассматривается.
Ответ 2
java предоставил выделенный API для обработки с помощью "null".
https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html