【问题标题】:JAVA: maps and return type of Map.getJAVA:Map.get 的映射和返回类型
【发布时间】:2015-10-06 06:59:30
【问题描述】:

我有一个字符串类型的键和值的哈希图。

Map<String, String> map = new HashMap<>();
//put the key-values now

我想检查特定键的值是否为空或为空。参考 here的讨论,我这样做:

if("".equals(map.get("keyName")) {
    //do stuff
}

有效吗? 由于 Map.get 的返回类型是 Object,所以我需要像这样检查它:

if("".equals(map.get("keyName").toString()) {
    //do stuff
}

但是如果 toString() 为空,它会给出空指针异常。那么,正确的做法是什么? 是的,我是初学者。

【问题讨论】:

  • 您最好先查看地图。 if(map!=null){ //yourcode}。 Nullpointer 发生是因为 map 为空,所以当您使用 map.get("keyName") 它返回该异常
  • 显示您的地图声明。

标签: java hashmap


【解决方案1】:

你可以这样做-

String val = map.get("keyName");
if(val != null && !"".equals(val)){
    // val is not null and is not empty
}

【讨论】:

  • 只是想问一下,为什么我们不能只执行"".equals(val) 检查而不执行其他操作?
  • @AkeshwarJha 你可以。但如果值为null 或具有某个值(非空白),"".equals(val) 将返回 false。
【解决方案2】:

我建议你使用来自Apache Commons的StringUtils:

if (!StringUtils.isEmpty(map.get("keyName")){
  // Do something
}

查看 JavaDoc:https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringUtils.html#isEmpty%28java.lang.String%29

【讨论】:

    【解决方案3】:

    你可以这样使用-

    if(map.get("keyName").equals(null) || map.get("keyName").equals("")){
         //Failed to insert code
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-20
      • 1970-01-01
      • 2021-08-11
      • 2011-12-30
      • 1970-01-01
      • 2018-07-27
      • 1970-01-01
      相关资源
      最近更新 更多