java获取第一个数据_如何在Java中获取第一个非null值?

问题

是否有SQL的等效SQL'sCOALESCE功能?也就是说,有没有办法返回几个变量的第一个非空值?

例如

Double a = null;

Double b = 4.4;

Double c = null;

我想以某种方式有一个语句将返回第一个非空值的值a,b和c-在这种情况下,它将返回b,或4.4。 (类似于sql方法 - returnCOALESCE(a,b,c))。我知道我可以用以下方式明确地做到:

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

但我想知道是否有任何内置的,可接受的功能来实现这一目标。

#1 热门回答(116 赞)

Apache Commons Lang 3

ObjectUtils.firstNonNull(T...)

Java 8 Stream

Stream.of(T...).filter(Objects::nonNull).findFirst().orElse(null)

#2 热门回答(89 赞)

不,没有。

你最接近的是:

public static T coalesce(T ...items) {

for(T i : items) if(i != null) return i;

return null;

}

出于有效的原因,你可以按如下方式处理常见情况:

public static T coalesce(T a, T b) {

return a == null ? b : a;

}

public static T coalesce(T a, T b, T c) {

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

}

public static T coalesce(T a, T b, T c, T d) {

return ...

}

#3 热门回答(50 赞)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值