Как сохранить элементы 2D-массива в hashmap? (Часть 1) - PullRequest
0 голосов
/ 11 марта 2020

У меня есть лист Excel, из которого я должен прочитать все ячейки и сохранить их в 2D-массиве, что я уже сделал. Теперь я хочу сохранить эти элементы 2D-массива в хэш-карте. Я попытался использовать следующий код, но когда я печатаю карту, он печатает только последние прочитанные элементы с соответствующими ключами. Это можно понять из следующего примера: -

1> Мой лист Excel:

enter image description here

2> Код для заполнения 2D-массива из таблицы Excel:

String[][] excelData = new String[numRows][numCols];
            System.out.println("Populating Array....");
            for (int i=0; i<numRows; i++) 
            {
                HSSFRow row = sheet.getRow(i);
                for (int j=0; j<numCols; j++) 
                {
                    HSSFCell cell = row.getCell(j);
                    String cellValue = cellToString(cell); //cellToString is a function in class
                    excelData[i][j] = cellValue; //data stored in excelData[][] array
                }   
            }
            System.out.println("Array population complete");

3> Мой код для преобразования 2D-массива в Hashmap

   System.out.println("putting in map");            
   HashMap map = new HashMap();
   for (int j = 0; j < numCols;j++) //Columns
   {                
    for (int i = 1; i < numRows;i++ ) //Rows
    {
     map.put(excelData[0][j], excelData[i][j]);
    }
   }
   System.out.println("Map values key :" +map);

4> Фактический вывод: -

Ключ значений карты: {Заголовок 1 = значениеH1_3, Заголовок 2 = значениеH2_3, Заголовок 3 = значениеH3_3, Заголовок 4 = значениеH4_3, Заголовок 5 = значениеH5_3}

Указанный выше вывод неверен.

Ожидаемый вывод: -

Ключ значений карты: {Заголовок 1 = значениеH1_1, значениеH1_2, значениеH1_3, Заголовок 2 = значениеH2_1, значениеH2_2, значениеH2_3 Заголовок 3 = значениеH3_1, значениеH3_2, значениеH3_3, Заголовок 4 = значениеH4_1, значениеH4_2, значениеH4_3, Заголовок 5 = значениеH5_1, значениеH5_2, значениеH5_3}

Карта не может сохранить предыдущие итерированные значения ключей. Может кто-нибудь помочь, пожалуйста

1 Ответ

1 голос
/ 11 марта 2020
    HashMap map = new HashMap();
    for (int j = 0; j < numCols;j++) //Columns
    {
        for (int i = 1; i < numRows;i++ ) //Rows
        {
            //map.put(excelData[0][j], excelData[i][j]);
            if(map.containsKey(excelData[0][j])){
                String existingVal = (String) map.get(excelData[0][j]);
                String updatedVal = existingVal + "," + excelData[i][j];
                map.put(excelData[0][j], updatedVal);
            } else {
                map.put(excelData[0][j], excelData[i][j]);
            }
        }
    }
    System.out.println("Map values key :" +map);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...