2013-04-25 2 views
0

У меня есть программа, в которой я должен читать данные из файла excel и хранить их в базе данных. Я использую LinkedHashmap для чтения каждой ячейки в виде строки. Мой файл Excel содержит выше данные:treemap для увеличения ID

ID NAME SALARY

5 Christine 2349000

6 Паулина 1000

7 Лауры 12587458

8 EFI 34567

43 jim 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

Храните ключи treemap (Ids) в качестве целых чисел, а не как строки; иначе они будут сравниваться в лексикографическом порядке, а не в числовом порядке.

Integer intId = new Integer(stringId); 

Теперь вам просто нужно выделить TreeMap<Integer, Object> (или TreeMap<Integer, String> или что-то в зависимости от того, что это вы хранения), где ключевым является целочисленный идентификатор и значение объекта для хранения.

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

Когда приходит время, чтобы считывать значения, используйте treeMap.values() и вы получите отсортированный коллекцию значений в TreeMap.

Смежные вопросы