+ -
当前位置:首页 → 问答吧 → 请教Map中取值的合理写法

请教Map中取值的合理写法

时间:2011-11-26

来源:互联网

如题,有以下问题
Map map = new HashMap();
double d = map.get("d") == null?0:(Double)map.get("d");
这样似乎不太合适,求教合理写法

如下写法是否可以
if(map.contain("d")){
  d = map.get("d");
}else{
  throw new MyException("null");
}

作者: aimuke   发布时间: 2011-11-26

if(map.contain("d")){
  d = map.get("d");
}
这样都可以了

作者: wang7535067   发布时间: 2011-11-26

三目运算符..

作者: LeeHomWong   发布时间: 2011-11-26

Map 通过key获取的是Object 但这个Object有可能是空,也就是对应的Key不存在vlaue

所以强转类型前最好是判断下是否非空在强转,但不建议用异常这种处理方式,比较消耗系统资源

Map map = new HashMap();

Double d = null ;

Object value = map.get("key");
if(null != value){
  d = (Double)value
}else{
  d = new Double(0) ;
}

当然你那种三目运算也可以,只是看起来不够清晰。


或者还有种,先把key取出,再找
List keyList = new ArrayList(map.keySet());
if(keyList.contains("key")){
....

}

作者: yangqi900   发布时间: 2011-11-26