2015-07-18 5 views
3

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

HashMap установлен с ключами до этого кода, который отлично работает.

Следующий код проходит через таблицуView, получает элементы из столбца, если элемент равен ключу в хэш-карте, тогда он помещает идентификатор dogsID в значение hashmap.

// loop through tableView items 
    for (Dog item : BookDogTableView.getItems()) { 
     // cell data is not null 
     if ((BookDogSelectRunCol.getCellData(item) != null)) { 

      // loop through map 
      for (Integer key : hashMap.keySet()) { 

       // if chosen run ID equals key 
       if (BookDogSelectRunCol.getCellData(item)) { 

        // put dog in map 
        BookingInformation.hashMap.put(key, 
          item.getDogID()); 

       } 
      } 

     } 


     for (Integer keyprint : hashMap.keySet()) { 

      if (hashMap.get(keyprint) != 0) { 

        System.out.println("RUn ID : " + keyprint + " DogID : " 
          + hashMap.get(keyprint)); 

      } 
     } 

    } 

Однако это отпечаток на экране с дубликатными ключами.

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

ответ

7

Там не может быть дубликаты ключей в HashMap.

Оказалось, что вы печатаете внутри петли for. Упрощенный код, показывающая проблема:

for (Dog item : BookDogTableView.getItems()) { 
    // cell data is not null 
    ... 

    for (Integer keyprint : hashMap.keySet()) { 
     if (hashMap.get(keyprint) != 0) { 
       System.out.println("RUn ID : " + keyprint + " DogID : " 
         + hashMap.get(keyprint)); 
     } 
    } 
} //close of outer for loop 

Решения просто переместить печать for петли из внешней for петли.

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