【问题标题】:Java - How to write iterator that iterates through values of a HashSet within a MapJava - 如何编写遍历 Map 中 HashSet 值的迭代器
【发布时间】: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


【解决方案1】:

使用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));
}

}

【讨论】:

    猜你喜欢
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    • 2017-08-18
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 2016-09-03
    • 2021-05-03
    相关资源
    最近更新 更多