0

我有一个程序,我必须从 excel 文件中读取数据并将它们存储在数据库中。我正在使用 LinkedHashmap 将每个单元格作为字符串读取。我的 excel 文件包含上述数据:

身份证 姓名 工资

5 克里斯汀 2349000

6 宝莲娜 1000

7 劳拉 12587458

8 电喷 34567

43 吉姆 45878

当我运行程序时,我成功地得到了我想要的结果。我现在遇到的问题是我想通过升序 ID 将数据存储在我的数据库中。我将如何做到这一点?我知道我必须使用 treeMap 但究竟如何?下面的代码用于将数据存储在数据库中。我正在从 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;
        }
4

1 回答 1

0

将树图键 (Ids) 存储为整数,而不是字符串;否则它们将按字典顺序而不是数字顺序进行比较。

Integer intId = new Integer(stringId);

现在您只需要分配一个TreeMap<Integer, Object>(或TreeMap<Integer, String>任何取决于您存储的内容),其中键是整数 ID,值是要存储的对象。

TreeMap<Integer, Object> treeMap = new TreeMap<Integer, Object>();
treeMap.put(intId, obj);

当需要读出值时,使用treeMap.values(),您将获得树图中值的排序集合。

于 2013-04-25T14:01:14.563 回答