为什么将相同的值放入我的 LinkedHashMap 数组中?
Why do the same values get put into my LinkedHashMap Array?
我正在对数组使用 LinkedHashMap
。 'put' 和 'get' 值的方法是什么?
在我的 LinkedHashMap<Integer, Integer[]>
我有:
Key 1 -> integer array like {5,6,2,4}
Key 2 -> integer array, like {7,2,6,1}
.... goes on
这是我用来存储值的代码片段
// has to store the data as order as it is received
LinkedHashMap<Integer, Integer[]> hParamVal = new LinkedHashMap<Integer, Integer[]>();
// temprory integer array to store the number as it is received
Integer[] iArryNoOfParam = new Integer[iNoOfScalar];
for (iRow = 0; iRow < iNoOfBlocks; iRow++) {
for (iCol = 0; iCol < iNoOfArrVal; iCol++) {
bBuffGenStr = Arrays.copyOfRange(BuffRecv, iStartLoc, iOffset);
GenDataVal oParamVal = dataStruct.readGenValue(bBuffGenStr);
bBuff4GenStr = oParamVal.getValue();
// store the integer array as received
iArryNoOfParam[iCol] = ByteBuffer.wrap(bBuff4GenStr)
.order(ByteOrder.LITTLE_ENDIAN).getInt();
iStartLoc = iOffset;
}
// store the array of Integer to every key
hParamVal.put(iRow, iArryNoOfParam);
}
hParamVal.put
正确吗?
下面的代码是从LinkedHashMap
获取数据
for (Integer key : hLoadSurveyParam.keySet()) {
System.out.println(" KEY # " + key);
for (iCol = 0; iCol < iNoOfScalar; iCol++) {
System.out.println(hParamVal.get(key)[iCol]);
}
}
上面的hParamVal.get
是正确的吗?
我得到相同的值,因为所有键的最后一个值都存储在 iArryNoOfParam
中!
带上这条线
Integer[] iArryNoOfParam = new Integer[iNoOfScalar];
进入你的 for
循环。
当您调用 put()
时,您将数组的引用存储在 LinkedHashMap 中。由于您每次都存储相同的引用,因此您只会看到最后设置的值。您想要为 LinkedHashMap 中的每个键存储一个新的数组引用。
我正在对数组使用 LinkedHashMap
。 'put' 和 'get' 值的方法是什么?
在我的 LinkedHashMap<Integer, Integer[]>
我有:
Key 1 -> integer array like
{5,6,2,4}
Key 2 -> integer array, like
{7,2,6,1}
.... goes on
这是我用来存储值的代码片段
// has to store the data as order as it is received
LinkedHashMap<Integer, Integer[]> hParamVal = new LinkedHashMap<Integer, Integer[]>();
// temprory integer array to store the number as it is received
Integer[] iArryNoOfParam = new Integer[iNoOfScalar];
for (iRow = 0; iRow < iNoOfBlocks; iRow++) {
for (iCol = 0; iCol < iNoOfArrVal; iCol++) {
bBuffGenStr = Arrays.copyOfRange(BuffRecv, iStartLoc, iOffset);
GenDataVal oParamVal = dataStruct.readGenValue(bBuffGenStr);
bBuff4GenStr = oParamVal.getValue();
// store the integer array as received
iArryNoOfParam[iCol] = ByteBuffer.wrap(bBuff4GenStr)
.order(ByteOrder.LITTLE_ENDIAN).getInt();
iStartLoc = iOffset;
}
// store the array of Integer to every key
hParamVal.put(iRow, iArryNoOfParam);
}
hParamVal.put
正确吗?
下面的代码是从LinkedHashMap
for (Integer key : hLoadSurveyParam.keySet()) {
System.out.println(" KEY # " + key);
for (iCol = 0; iCol < iNoOfScalar; iCol++) {
System.out.println(hParamVal.get(key)[iCol]);
}
}
上面的hParamVal.get
是正确的吗?
我得到相同的值,因为所有键的最后一个值都存储在 iArryNoOfParam
中!
带上这条线
Integer[] iArryNoOfParam = new Integer[iNoOfScalar];
进入你的 for
循环。
当您调用 put()
时,您将数组的引用存储在 LinkedHashMap 中。由于您每次都存储相同的引用,因此您只会看到最后设置的值。您想要为 LinkedHashMap 中的每个键存储一个新的数组引用。