java - 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
任何帮助或相关资源将不胜感激。
解决方案
使用 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));
}
}
推荐阅读
- macos - GitLab CE Docker - 使用 80 以外的其他端口时响应为空
- javascript - 使用带有日历选择的单个文本框将 Javascript 日期过滤到 DataTable
- python - Python 3 群发电子邮件验证连接被拒绝
- c - 需要从用户字符串中扫描,然后将句子划分为变量,(float 和 char)
- php - 使用 Visual Composer 无法正确显示获取帖子内容
- c# - 如何找到以“”分隔的字符串中的最后一个单词?C#
- angular - 将动画应用于动态加载的组件Angular 5
- node.js - 如何从 mongodb 通过 Geowithin 获取匹配的子文档?
- r - 在向量/列表中选择“最近元素”的函数
- android - 如何隐藏
特定片段的活动中的布局