我想转换以下多维数组
[[ChestPain, (Chest), Heartburn], [Day2NumberofRefluxes, 2, 1, 5], [SIDay2, 15.4, 3.8, 71.4], [SAPDay2, 70.2, 0.0, 99.9]]
进入哈希图,如下所示
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}