当前位置:编程学习 > JAVA >>

旷世难题,求牛人解答



如上图,程序报错,调试的时候发现
1.get出来是空
2.判断!=null报错了
3.判断==null 是true 
这究竟是什么原因。。 null  调试 java --------------------编程问答-------------------- 就一个图让人怎么看呐

贴关键代码 --------------------编程问答-------------------- 好难呀     我就看到了  16个keyset --------------------编程问答--------------------
  	Map<String, EquipStatusRealData> equipStatusMap = new HashMap<String, EquipStatusRealData>();
Map<String, MeasureData> dataMap = dalianRealtimeDataCache
        .getCachedRealDataMap(mnList);
for (int i = 0; i < mnList.size(); i++) {
String mn = mnList.get(i);
MeasureData mdata = dataMap.get(mn);
// 判断是否存在实时数据
if (mdata != null && mdata.getValues() != null) {
EquipStatusRealData data = new EquipStatusRealData();
                // 下面这行mdata.getValues().get("G01")!=null出错了
                //但是改成!(mdata.getValues().get("G01")==null) 就没有问题,a!=null 和!(a==null)有区别么,为什么会出错?
if(mdata.getValues().get("G01")!=null|| mdata.getValues().get("G02")==null)){
data.setLongitude(mdata.getValues().get("G01"));
data.setLatitude(mdata.getValues().get("G02"));
}
List<AlarmData> alarmDataList = alarmDataCache.getAlarmData(mn);
if (alarmDataList != null && alarmDataList.size() > 0) {
// 获取设备的最新一条超标数据
AlarmData alarmData = alarmDataList.get(alarmDataList
        .size() - 1);
data.setAlarmType(alarmData.getAlarmType());
} else {
data.setAlarmType(0);// 无超标数据
}
equipStatusMap.put(mn, data);
}
}
return equipStatusMap;


另附getValues方法
public Map getValues() {
Map originalValues = super.getValues();
Map filterValues = new HashMap();
if (originalValues == null)
    return filterValues;
Iterator itr = originalValues.entrySet().iterator();
while (itr.hasNext()) {
    Map.Entry next = (Map.Entry) itr.next();
    String key = (String) next.getKey();
    Float value = (Float) next.getValue();
    if (checkField(key))
filterValues.put(key, value);
    else
filterValues.put(key, Float.valueOf(Float.NaN));
}
return filterValues;
    }
--------------------编程问答--------------------
引用 1 楼 ticmy 的回复:
就一个图让人怎么看呐

贴关键代码
代码更新了,求解答 --------------------编程问答--------------------
引用 2 楼 scottxzj 的回复:
好难呀     我就看到了  16个keyset
代码更新了,求解答 --------------------编程问答-------------------- 你那个mnList里有值? --------------------编程问答-------------------- 用null != mdata.getValues().get("G01")
补充:Java ,  Java EE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,