我正在使用LinkedHashMap从excel文件中读取数据并将它们存储在mysql的表中! 如何对LinkedHashMap进行排序以存储具有降序ID的数据? 以下是我的Excel文件的示例:
ID姓名薪水
50克里斯汀2349000
43 paulina 1245874
54劳拉4587894
以下代码用于存储表格中excel文件的数据!
private static LinkedHashMap[] parseExcelColumnData(List sheetData) {
LinkedHashMap[] tousRows = new LinkedHashMap[sheetData.size() - 1];
for (int rowCounter = 1; rowCounter < sheetData.size(); rowCounter++) {
List list = (List) sheetData.get(rowCounter);
LinkedHashMap<String, Integer> tableFields = new LinkedHashMap(list.size());
String str;
String[] tousFields = new String[list.size()];
int i = 0;
for (int j = 0; j < list.size(); j++) {
Cell cell = (Cell) list.get(j);
if (cell != null) {
if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
tableFields.put(String.valueOf(cell
.getNumericCellValue()), cell.getCellType());
} else if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
tableFields.put(cell.getStringCellValue(), cell
.getCellType());
} else if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) {
tableFields.put(String.valueOf(cell
.getBooleanCellValue()), cell.getCellType());
}
}
}
tousRows[rowCounter - 1] = tableFields;
}
return tousRows;
}
答案 0 :(得分:1)
根据to the documentation,LinkedHashMap“通常”按照添加到地图的顺序存储密钥,因此您无法真正更改排序。
您可以做的是提取所有密钥并对其进行排序,例如:
LinkedHashMap<Integer, String> map = new LinkedHashMap <Integer, String>();
/* add elements here */
Set<Integer> keys = new TreeSet<Integer>();
keys.addAll(map.keySet());
Set<Integer> keys
现在按排序顺序包含所有地图键,因为TreeSet基于其自然顺序存储了元素