我有一个String和String的映射。我想提取键值并将其分配给另一个String变量,但是按优先级顺序。
abc
密钥,则将abc
的值分配给clientId
变量,我们就完成了。abc
密钥不存在,则为Buf,然后查找此密钥pqr
并将pqr
的值分配给clientId
变量,我们就完成了。pqr
密钥也不存在,那么请查找此密钥def
并将def
的值分配给clientId
变量,我们就完成了。clientId
的值将为空。以下是代码:
Map<String, String> holderMap = populateHolderMap<>();
String clientId = null;
if (!holderMap.isEmpty()) {
clientId = holderMap.get("abc");
if (Strings.isNullOrEmpty(clientId)) {
clientId = holderMap.get("pqr");
if (Strings.isNullOrEmpty(clientId)) {
clientId = holderMap.get("def");
}
}
}
有没有更好的方法来写这个东西?或者可能是使用三元运算符的一个班轮?
有可能存在所有三个键或者可以存在两个键,我总是必须坚持我的订单。如果存在abc
密钥,那么无论是否存在其他密钥,我们都将使用该密钥。
答案 0 :(得分:0)
请在较小的代码行上寻找代码可读性。你有什么好。
使用三元运算符: 语法是条件? if_condition_true:if_condition_false;
if (!holderMap.isEmpty()) {
clientId = holderMap.get("abc") == null ?
holderMap.get("pqr") == null ?
holderMap.get("def") == null ?
null : holderMap.get("def") : holderMap.get("pqr") : holderMap.get("abc");
}
使用if和else if
if (!holderMap.isEmpty()) {
if( holderMap.get("abc") != null ) {
clientId = holderMap.get("abc");
} else if ( holderMap.get("pqr") != null ) {
clientId = holderMap.get("pqr");
} else if (holderMap.get("def") != null ) {
clientId = holderMap.get("def");
}
}