首页 > 解决方案 > Java - 如何编写遍历 Map 中 HashSet 值的迭代器

问题描述

我遇到了一个问题,我必须为 AbstractMap 编写一个迭代器,其中值在 HashSet 中表示。这是我正在使用的课程:

public class SetMap<K, V> extends AbstractMap<K, HashSet<V>> implements Iterable<V>

我得到的指示如下:

“实现迭代器,以便仅遍历值 V。首先按与键关联的 HashSet 对象大小的降序遍历值,然后按 HashSet 的迭代器顺序遍历值。”

考虑到我只应该遍历 Map 中的 HashSet,我基本上不确定如何编写我的自定义hasNext()和HashSet。Next()

我是 Java 新手,所以遍历多维映射,尤其是使用集合作为一些值,对我来说非常困惑。

我的主要功能可以做的一个例子 -

SetMap<String, Integer> map = new SetMap<>();

map.addValue("B", 4);
map.addValue("A", 0);
map.addValue("A", 1);
map.addValue("B", 3);
map.addValue("A", 2);
    for (Integer value : map) {

        System.out.println(value);
    }
}

- 是产生这样的东西:

0
1
2
3
4

任何帮助或相关资源将不胜感激。

标签: javadictionaryiteratorset

解决方案


使用 HashSet 的get(String s)

SetMap<String, Integer> map = new SetMap<>();

map.addValue("B", 4);
map.addValue("A", 0);
map.addValue("A", 1);
map.addValue("B", 3);
map.addValue("A", 2);
for (String s : map) {

    System.out.println(map.get(value));
}

}


推荐阅读