Java 如何在hashmap中存储2D数组元素?(第一部分)
我有一个excel表格,我必须从中读取所有单元格并存储在2D数组中,我已经这样做了。现在我想将这些2D数组元素存储在hashmap中。我尝试使用以下代码,但当我打印地图时,它只打印最后读取的元素及其相应的键。可以从以下示例中理解:- 1> 我的Excel表格是: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....");
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);