2016-05-23 36 views
1

我想下面的多维数组嵌套循环多维数组转换成一个HashMap

[[ChestPain, (Chest), Heartburn], [Day2NumberofRefluxes, 2, 1, 5], [SIDay2, 15.4, 3.8, 71.4], [SAPDay2, 70.2, 0.0, 99.9]] 

转换成一个HashMap如下

mapReflDayOneandTwo{Day2NumberofRefluxesChestPain=2, Day2NumberofRefluxes(Chest)=1, Day2NumberofRefluxesHeartburn=5, SIDay2ChestPain=15.4, SIDay2(Chest)=3.8, SIDay2Heartburn=71.4, SAPDay2ChestPain=70.2, SAPDay2(Chest)=0.0, SAPDay2Heartburn=99.9} 

我想用下面的代码来做到这一点:

for (int ff=1;ff<Symptoms.size();ff++){ 
     for (int fx=0;fx<Symptoms.get(0).size();fx++){ 
      for (int fxr=1;fxr<Symptoms.get(fx).size();fxr++){ 
      mapReflDayOneandTwo.put(Symptoms.get(ff).get(0)+Symptoms.get(0).get(fx),Symptoms.get(ff).get(fxr)); 
                   } 
                 } 
             } 

但是,当我这样做的价值观似乎是不正确的,我得到f以及与错误键相关联的值的结果。我在循环中做了什么错误? (和转移的FF开始为0或FXR开始在0也不管用)

mapReflDayOneandTwo{Day2NumberofRefluxesChestPain=1, Day2NumberofRefluxes(Chest)=5, Day2NumberofRefluxesHeartburn=5, SIDay2ChestPain=3.8, SIDay2(Chest)=71.4, SIDay2Heartburn=71.4, SAPDay2ChestPain=0.0, SAPDay2(Chest)=99.9, SAPDay2Heartburn=99.9} 

回答

1

问题是,你有3个循环,所以你将一切的一切结合起来(但你只能看到最后结果,因为在地图上,旧的连击被覆盖)。你要做的就是,例如,结合(Chest)Day2NumberofRefluxes 3次,但结果只有一个会留在地图上的错误之一:

    for变量
  1. 值会1, 1, 1,所以您将值Day2NumberofRefluxes(Chest)=2在地图
  2. for变量的值
  3. 1, 1, 2,所以您将值Day2NumberofRefluxes(Chest)=1在地图for变量
  4. 值将是1, 1, 3,所以您将值Day2NumberofRefluxes(Chest)=5在地图

因此,您在地图上留下了Day2NumberofRefluxes(Chest)=5

你只需要2 for循环,首先要经过第一列表,第二个要经过其他列表中的基质,所以当你与Day2NumberofRefluxes结合(Chest),在那一刻,你知道他们的组合价值(i,j + 1)的坐标,并且您将在映射值:

for (int i = 0; i < Symptoms.get(0).size(); i++) { 
     for (int j = 1; j < Symptoms.size(); j ++) { 
      mapReflDayOneandTwo.put(Symptoms.get(j).get(0) + Symptoms.get(0).get(i), 
       Symptoms.get(j).get(i + 1)); 
     } 
    } 

现在,您可以:

{Day2NumberofRefluxes(Chest)=1, Day2NumberofRefluxesChestPain=2, Day2NumberofRefluxesHearthburn=5, SAPDay2(Chest)=0.0, SAPDay2ChestPain=70.2, SAPDay2Hearthburn=99.9, SIDay2(Chest)=3.8, SIDay2ChestPain=15.4, SIDay2Hearthburn=71.4} 
+0

如果我将它们转移回0我得到以下输出:HeartburnHeartburn胃灼热, HeartburnHeartburn(胸围), HeartburnHeartburn胸痛,胃灼热 (胸围)心痛,心痛 (胸围)(胸围), 烧心(胸)胸痛, –

+0

看到它在错误的第一... ...固定OK –

+0

。完善。非常感谢 –