【发布时间】:2019-08-27 22:23:11
【问题描述】:
我遇到了一个问题,我必须为 AbstractMap 编写一个迭代器,其中值在 HashSet 中表示。这是我正在使用的课程:
public class SetMap<K, V> extends AbstractMap<K, HashSet<V>> implements Iterable<V>
我得到的指示如下:
“实现迭代器,只遍历值 V。首先按照与键关联的 HashSet 对象大小的降序遍历值,然后按 HashSet 的迭代器顺序。”
我基本上不确定如何编写我的自定义 hasNext() 和 Next(),考虑到我只应该遍历 Map 中的 HashSet。
我是 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
非常感谢任何帮助或相关资源。
【问题讨论】:
-
要求“首先按与键关联的 HashSet 对象大小的降序遍历值”意味着您首先(当请求迭代器时)必须检索映射的所有值并将它们放入一个数组,然后按大小对这些
HashSet项进行排序。然后你基本上迭代这个数组并为每个数组项嵌套在HashSet元素上。
标签: java dictionary iterator set