2013-04-25 61 views
0

我有一個程序,我必須從Excel文件中讀取數據並將它們存儲在數據庫中。我正在使用LinkedHashmap以字符串形式讀取每個單元格。我的excel文件包含上述數據:treemap升序ID

ID NAME SALARY

5恭2349000

6波萊納1000

7勞拉12587458

8 EFI 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; 
     } 

回答

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()你會樹形圖中得到的值的分類收集。