【发布时间】:2019-12-01 08:48:17
【问题描述】:
在 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
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中添加key和value
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.
【问题讨论】:
标签: java hashmap apache-poi