使用ID对LinkedHashMap进行排序

时间:2013-04-29 12:59:48

标签: java linkedhashmap

我正在使用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;

        }

1 个答案:

答案 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基于其自然顺序存储了元素