为什么将相同的值放入我的 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 中的每个键存储一个新的数组引用。