Как получить первое ненулевое значение в Java? - PullRequest
132 голосов
/ 04 мая 2010

Существует ли Java-эквивалент функции COALESCE в SQL? То есть есть ли способ вернуть первое ненулевое значение нескольких переменных?

, например

Double a = null;
Double b = 4.4;
Double c = null;

Я хочу каким-то образом иметь оператор, который будет возвращать первое ненулевое значение a, b и c - в этом случае он вернет b или 4.4. (Что-то вроде метода sql - return COALESCE(a,b,c)). Я знаю, что могу сделать это явно с помощью чего-то вроде:

return a != null ? a : (b != null ? b : c)

Но мне было интересно, есть ли какая-нибудь встроенная, принятая функция для достижения этой цели.

Ответы [ 12 ]

0 голосов
/ 16 декабря 2016

Как насчет:

firstNonNull = FluentIterable.from(
    Lists.newArrayList( a, b, c, ... ) )
        .firstMatch( Predicates.notNull() )
            .or( someKnownNonNullDefault );

Java ArrayList удобно разрешает нулевые записи, и это выражение является согласованным независимо от количества рассматриваемых объектов (В этой форме все рассматриваемые объекты должны быть одного типа.)

0 голосов
/ 04 мая 2010
Object coalesce(Object... objects)
{
    for(Object o : object)
        if(o != null)
            return o;
    return null;
}
...