HashMap不必要地放置重复值

时间:2015-07-18 16:38:48

标签: java

我有以下代码,我想将结果插入数据库但是现在我只想打印出带有值的键。

在此代码之前使用键设置HashMap,工作正常。

以下代码循环遍历tableView,从列中获取项目,如果项目等于哈希映射中的键,则它将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));

            }
        }

    }

但是,这会使用重复键打印到屏幕。

有没有办法从地图中删除重复的键值或更改当前代码以避免重复的键值对

1 个答案:

答案 0 :(得分: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循环。