根据优先级从映射中提取键的值?

Extract value of the key from a map basis on a priority?

我有一个字符串和字符串的映射。我想提取键值并将其分配给另一个字符串变量,但按优先顺序。

代码如下:

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");
    }
}