我想转换以下多维数组

[[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));
                                                              }
                                                       }
                                       }


但是,当我这样做时,这些值似乎是不正确的,并且与错误的键关联的值得到了以下结果。循环中我在做什么错? (并且将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}

最佳答案

问题是,您有3个循环,因此可以将所有内容组合在一起(但您只会看到最终结果,因为在地图中,旧的组合被覆盖)。例如,您要做的是将(Chest)Day2NumberofRefluxes结合3次,但是只有一个结果将保留在地图中,而错误的结果是:


for变量的值将为1, 1, 1,因此您将值Day2NumberofRefluxes(Chest)=2放置在地图中
for变量的值将为1, 1, 2,因此您将值Day2NumberofRefluxes(Chest)=1放置在地图中
for变量的值将为1, 1, 3,因此您将值Day2NumberofRefluxes(Chest)=5放置在地图中


因此,您在地图中只剩下Day2NumberofRefluxes(Chest)=5

您只需要2个for循环,第一个遍历矩阵中的第一个列表,第二个遍历矩阵中的其他列表,因此,当将(Chest)Day2NumberofRefluxes结合使用时,那一刻您便知道其组合值的坐标(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}

10-01 11:45