【问题标题】:Implement iterator next-method for a HashMap - How?为 HashMap 实现迭代器 next-method - 如何?
【发布时间】:2013-12-10 03:49:57
【问题描述】:

我在为我实现的迭代器覆盖 Next-method 时遇到了一些困难。我想一一返回元素,但我似乎无法弄清楚如何,有人想赐教吗?目前我的代码如下所示:

public E next() {
    if (iteratorCount == map.size()) {
        throw new NoSuchElementException();
    }

我已经用 ArrayList 做了几次,但这似乎完全不同?

谢谢!

【问题讨论】:

  • HashMap 已经提供了一个迭代器。
  • 您认为地图上的next 应该具有什么语义?您是否要迭代键或值或它们的组合?
  • 首先,感谢您的快速回复!我知道 HashMap 提供了一个迭代器,但我想重写并创建自己的。我想遍历元素并返回它们。
  • 目前代码看起来对我们没有帮助,您能否转储完整的实现,您至少提出了整个 next 方法..

标签: java iterator hashmap next


【解决方案1】:

您可以使用Iterator,如下所示。为什么您要尝试创建自己的迭代器?

    Map<String, String> map=new HashMap<>();
    Iterator valueIterator=map.values().iterator(); // iterate through values
    Iterator keyIterator=map.keySet().iterator();   // iterate through keys

    //then 
    valueIterator.next();// for next value in the map
    keyIterator.next();// for the next key in the map

现在您可以按键迭代思维导图并返回它们,如下所示。

     while (keyIterator.hasNext()){
        System.out.println(map.get(keyIterator.next()));
     }

【讨论】:

  • 这是我们提供的一个练习,要求我们制作一个扩展 AbstractCollection 的 Set。我们想创建一个 HashMap 并覆盖一堆方法,其中 Iterator iterator().
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-02
  • 2012-02-18
  • 1970-01-01
相关资源
最近更新 更多