[英]Read and store the multiple value in HashMap Apache POI
在 Excel 中,我有如下数据,其中第一行是标题。
ProductName ProductSubType
COMPREHENSIVE INSURANCE COMPREHENSIVE INSURANCE
COMPREHENSIVE INSURANCE DRIVER & PASSENGER
COMPREHENSIVE INSURANCE THIRD PARTY INSURANCE
DEBT PROTECTION CREDIT LIFE
DEBT PROTECTION RETRENCHMENT
下面是我试过的代码。
XSSFSheet myExcelSheet3 = xssfWorkbook.getSheet("Sheet3");
XSSFRow xssfRow3 = myExcelSheet3.getRow(0);
Integer columnIndexKey = null;
for (Cell cell : xssfRow3) {
if (cell.getStringCellValue().equalsIgnoreCase("ProductType")) {
columnIndexKey = cell.getColumnIndex();
break;
}
}
Set<String> stringKey = new HashSet<>();
if (columnIndexKey != null) {
for (Row row : myExcelSheet3) {
if (row.getRowNum() == 0) {
continue;
}
Cell cell = row.getCell(columnIndexKey);
stringKey.add(getCellData(xssfWorkbook, cell));
}
}
List<String> stringKeyList = new ArrayList<>(stringKey);
Collections.sort(stringKeyList);
获取值,即 ProductSubType 作为列表
List<String> stringValue = new ArrayList<>();
if (columnIndexValue != null) {
for (Row row : myExcelSheet3) {
if (row.getRowNum() == 0) {
continue;
}
Cell cell = row.getCell(columnIndexValue);
stringValue.add(getCellData(xssfWorkbook, cell));
}
}
最后在 HashMap 中添加键和值
Map<List<String>, List<String>> stringListMap = new HashMap<>();
stringListMap.put(stringKeyList,stringListValue);
stringListMap.forEach((k,v) -> System.out.println("Key = "+ k + ", Value = " + v));
我得到的输出是
Key = [COMPREHENSIVE INSURANCE, DEBT PROTECTION], Value = [COMPREHENSIVE INSURANCE, DRIVER & PASSENGER, THIRD PARTY INSURANCE, CREDIT LIFE, RETRENCHMENT]
但是我想要以下格式的输出。
COMPREHENSIVE INSURANCE -> COMPREHENSIVE INSURANCE, DRIVER & PASSENGER, THIRD PARTY INSURANCE
DEBT PROTECTION -> CREDIT LIFE, RETRENCHMENT.
使用Map<String, List<String>>
而不是Map<List<String>, List<String>>
并像这样重新排序代码。
//Calculate columnIndexKey and columnIndexValue
Map<String, List<String>> result = new HashMap<>();
if (columnIndexKey != null && comumnIndexValue != null) {
for (Row row : myExcelSheet3) {
if (row.getRowNum() == 0) {
continue;
}
Cell cell = row.getCell(columnIndexKey);
Cell valueCell = row.getCell(columnIndexValue);
String key = getCellData(xssfWorkbook, cell);
String value = getCellData(xssfWorkbook, valueCell);
if (!result.contains(key)) {
result.put(key, new ArrayList<>());
}
result.get(key).add(value);
}
}
result.foreach((k, v) -> System.out.println("Key = "+ k + ", Value = " + v));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.