根据优先级从映射中提取键的值?
Extract value of the key from a map basis on a priority?
我有一个字符串和字符串的映射。我想提取键值并将其分配给另一个字符串变量,但按优先顺序。
- 如果
abc
键存在,则将 abc
的值赋给 clientId
变量,我们就完成了。
- Buf 如果
abc
键不存在,则查找此键 pqr
并将 pqr
的值分配给 clientId
变量,我们就完成了。
- 但如果
pqr
键也不存在,则查找此键 def
并将 def
的值分配给 clientId
变量,我们就完成了。
- 但是如果存在 none 个键,则
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
键存在,那么无论其他键是否存在,我们都将使用它。
请在较少的代码行上提高代码的可读性。你有的很好。
使用三元运算符:
语法是条件? 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");
}
}
我有一个字符串和字符串的映射。我想提取键值并将其分配给另一个字符串变量,但按优先顺序。
- 如果
abc
键存在,则将abc
的值赋给clientId
变量,我们就完成了。 - Buf 如果
abc
键不存在,则查找此键pqr
并将pqr
的值分配给clientId
变量,我们就完成了。 - 但如果
pqr
键也不存在,则查找此键def
并将def
的值分配给clientId
变量,我们就完成了。 - 但是如果存在 none 个键,则
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
键存在,那么无论其他键是否存在,我们都将使用它。
请在较少的代码行上提高代码的可读性。你有的很好。
使用三元运算符: 语法是条件? 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");
}
}