Java 如何在hashmap中存储2D数组元素?(第一部分)

Java 如何在hashmap中存储2D数组元素?(第一部分),java,excel,apache-poi,Java,Excel,Apache Poi,我有一个excel表格,我必须从中读取所有单元格并存储在2D数组中,我已经这样做了。现在我想将这些2D数组元素存储在hashmap中。我尝试使用以下代码,但当我打印地图时,它只打印最后读取的元素及其相应的键。可以从以下示例中理解:- 1> 我的Excel表格是: String[][] excelData = new String[numRows][numCols]; System.out.println("Populating Array....");

我有一个excel表格,我必须从中读取所有单元格并存储在2D数组中,我已经这样做了。现在我想将这些2D数组元素存储在hashmap中。我尝试使用以下代码,但当我打印地图时,它只打印最后读取的元素及其相应的键。可以从以下示例中理解:-

1> 我的Excel表格是:

String[][] excelData = new String[numRows][numCols];
            System.out.println("Populating Array....");
            for (int i=0; i<numRows; i++) 
            {
                HSSFRow row = sheet.getRow(i);
                for (int j=0; j<numCols; j++) 
                {
                    HSSFCell cell = row.getCell(j);
                    String cellValue = cellToString(cell); //cellToString is a function in class
                    excelData[i][j] = cellValue; //data stored in excelData[][] array
                }   
            }
            System.out.println("Array population complete");
2> 从excel工作表填充二维数组的代码为:

String[][] excelData = new String[numRows][numCols];
            System.out.println("Populating Array....");
            for (int i=0; i<numRows; i++) 
            {
                HSSFRow row = sheet.getRow(i);
                for (int j=0; j<numCols; j++) 
                {
                    HSSFCell cell = row.getCell(j);
                    String cellValue = cellToString(cell); //cellToString is a function in class
                    excelData[i][j] = cellValue; //data stored in excelData[][] array
                }   
            }
            System.out.println("Array population complete");
3> 将2D数组转换为Hashmap的代码

   System.out.println("putting in map");            
   HashMap map = new HashMap();
   for (int j = 0; j < numCols;j++) //Columns
   {                
    for (int i = 1; i < numRows;i++ ) //Rows
    {
     map.put(excelData[0][j], excelData[i][j]);
    }
   }
   System.out.println("Map values key :" +map);
4> 实际产量:-

映射值键: {头1=valueH1_3,头2=valueH2_3,头3=valueH3_3,头4=valueH4_3, 标题5=值h5_3}

上述输出不正确

预期产出:-

映射值键:{Header 1=valueH1_1,valueH1_2,valueH1_3,Header 2=valueH2_1,valueH2_2,valueH2_3, 标题3=值H3_1,值H3_2,值H3_3,标题4=值H4_1,值H4_2,值H4_3, 标题5=值H5_1、值H5_2、值H5_3}


Map无法保留以前迭代过的键值。有人能帮忙吗?

将generic添加到你的Map中。String类已经覆盖了toString和HashCode,我建议阅读Hello,我不熟悉Java。据我所知,hashmap是一个类似于字典的容器,为什么不将整个数组值放入hashmap,但将每个值都放入其中呢?感谢您的快速回复。答案如下:Map values key{Header 1=[Ljava.lang.String;@735b5592,Header 2=[Ljava.lang.String;@735b5592,头3=[Ljava.lang.String;@735b5592,头4=[Ljava.lang.String;@735b5592,头5=[Ljava.lang.String;@735b5592}@user10971281如果有任何遗漏,请进行更新。我已经用示例数据尝试了这个方法。对我来说很好!是的,它对我来说非常有效。谢谢Aditya Rewari。现在我要做一些更复杂的类似事情。如果我陷入其中,那么我也会发布它。再次感谢
    HashMap map = new HashMap();
    for (int j = 0; j < numCols;j++) //Columns
    {
        for (int i = 1; i < numRows;i++ ) //Rows
        {
            //map.put(excelData[0][j], excelData[i][j]);
            if(map.containsKey(excelData[0][j])){
                String existingVal = (String) map.get(excelData[0][j]);
                String updatedVal = existingVal + "," + excelData[i][j];
                map.put(excelData[0][j], updatedVal);
            } else {
                map.put(excelData[0][j], excelData[i][j]);
            }
        }
    }
    System.out.println("Map values key :" +map);