Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取嵌套HashMap的值_Java_Gwt_Gwt Highcharts - Fatal编程技术网

Java 获取嵌套HashMap的值

Java 获取嵌套HashMap的值,java,gwt,gwt-highcharts,Java,Gwt,Gwt Highcharts,我在地图中有地图和列表,想从数据库中获取这个地图对象的数据,有人能建议我在这个代码中获取两个地图的键和值是否正确,我有一个对象a它包含一个对象B和C值列表,我正在获取一个对象的数据,但是B和C对象的数据在所有A对象中都是相似的,C对象仅为一个点,而没有呈现所有值,我哪里做错了 void getData(int dataNo){ AsyncCallback callback=新的AsyncCallback(){ 失败时的公共无效(可丢弃){ } 成功时的公共无效(映射结果){ 面板。清除(); f

我在地图中有地图和列表,想从数据库中获取这个地图对象的数据,有人能建议我在这个代码中获取两个地图的键和值是否正确,我有一个对象a它包含一个对象B和C值列表,我正在获取一个对象的数据,但是B和C对象的数据在所有A对象中都是相似的,C对象仅为一个点,而没有呈现所有值,我哪里做错了

void getData(int dataNo){
AsyncCallback callback=新的AsyncCallback(){
失败时的公共无效(可丢弃){
}
成功时的公共无效(映射结果){
面板。清除();
for(Map.Entry:result.entrySet()){
A=entry.getKey();
Map bc=entry.getValue();
图表=新图表().setType(Series.Type.LINE)
.setLegend(新图例()
.setLayout(图例.布局.垂直)
.setAlign(图例.Align.RIGHT)
.setVerticalAlign(图例.VerticalAlign.TOP)
.setX(-10).setY(100)
.1(宽度(0))
.setZoomType(Chart.ZoomType.X_和Y);
setChartTitleText(a.getL());
for(Map.Entry在:bc.entrySet()中){
B=in.getKey();
列表c=in.getValue();
bc.containsKey(b);
bc.包含价值(c);
serie=chart.createSeries().setName(b.getF());
C[]ac=C.toArray(新C[C.size()]);
对于(C cd:ac){
系列设置点(新编号[]{cd.getS()});
}
图表.增补系列(系列);
}
面板。添加(图表);
}
}
};  
编辑填充地图:

   public Map<A, Map<B, List<C>>> getL(int dataNo) {
    Map<A, Map<B, List<C>>> outermap = new HashMap<A, Map<B, List<C>>>();
    Map<B,List<C>> innermap=new HashMap<B,List<C>>();

    List<A> a= DB.getL(dataNo);
    for (A aa: a) {
        outermap.put(aa, innermap);
        List<B> b=DB.getK(aa.getId());
        for(B bb: b){
        innermap.put(bb, DB.getD(bb.getId()));
     }

    }
    return outermap;
}
publicmap-getL(int-dataNo){
Map outermap=newhashmap();
Map innermap=新的HashMap();
列表a=DB.getL(数据编号);
(A aa:A){
外部映射放置(aa,内部映射);
列表b=DB.getK(aa.getId());
对于(B bb:B){
put(bb,DB.getD(bb.getId());
}
}
返回outermap;
}

填充
outermap
时,需要为每个条目使用不同的
innermap
。您的代码应为:

publicmap-getL(int-dataNo){
Map outermap=newhashmap();
列表a=DB.getL(数据编号);
(A aa:A){
Map innermap=新的HashMap();
外部映射放置(aa,内部映射);
列表b=DB.getK(aa.getId());
对于(B bb:B){
put(bb,DB.getD(bb.getId());
}
}
返回outermap;
}

能否显示填充顶级
映射的代码(在servlet中)?我的猜测是,当您使用
put
映射添加到顶级映射中时,您正在将相同的对象添加到顶级映射中的每个条目中。是否要为“a”的每个值创建一个新的
innermap
?也就是说,包含“
…innermap=…
”的行应该位于外循环中(就在
outermap.put(aa,innermap;
)之前)必须是这样的:List a=DB.getL(dataNo);for(aa:a){List b=DB.getK(aa.getId());for(bb:b){innermap.put(bb,DB.getD(bb.getId());}outermap.put(aa,innermap);}请看我的答案…我已经包含了我认为您需要的代码更改。