[英]Check null value of map
我得到map
作为结果,当我获得价值时,我需要将其转换为String
如下所示:
a.setA(map.get("A").toString());
但是如果它返回null
不是抛出nullPointerException
,那么我用下面的方法改变它:
a.setA(map.get("A")!=null?map.get("A").toString():"");
但是我有20多个字段,所以我只想这样做:
String val = "";
a.setA(val=map.get("A")!=null?val.toString():"");
但它一直返回blank
,我只是简单的问题是我不能使用这样的变量? 或者还有其他选择吗?
使用方法。 并避免两次调用get()
:
private String valueToStringOrEmpty(Map<String, ?> map, String key) {
Object value = map.get(key);
return value == null ? "" : value.toString();
}
...
String a = valueToStringOrEmpty(map, "A");
String b = valueToStringOrEmpty(map, "B");
现在重复一遍:“我不会重复代码”。
为什么不为此创建一个util方法:
public String getMapValue(Map m, String a){
String s = m.get(a);
if(s == null)
return "";
else
return s;
}
现在你只需要调用这个方法:
String val = getMapValue(map,"A");
a.setA(val);
问题是val
不会得到你想要的值,直到map.get("A")!=null?val.toString():""
被评估,试试这个:
String val = "";
a.setA((val=map.get("A"))!=null?val.toString():"");
所以你要确保val=map.get("A")
在整个事情之前进行评估。
你可以试试这个
Map<String,String> map=new HashMap<>();
Set<String> keySet=map.keySet();
Iterator it=keySet.iterator();
while (it.hasNext()){
if(map.get(it)!=null){
a.setA(map.get(it).toString());
}else{
a.setA(null);
}
}
使用Java 8,您可以执行以下操作:
a.setA(map.getOrDefault("A", "").toString());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.