HashMap不必要地存储了重复的值

3
我有以下代码,我想将结果插入到数据库中,但现在我只想打印出键及其值。
在此代码之前,HashMap 已经设置了键,这个方法是有效的。
下面的代码循环遍历 tableView,从一列中获取项,如果项目等于 HashMap 中的 key,则将 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个回答

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循环。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接