在Java中,我试图迭代地图以完成Map
接口的putAll()
方法的实现。但是,我不能使用keyset()
,entryset()
和values()
来执行此操作,这意味着我无法为此调用迭代器。如何在不使用迭代器或集的情况下遍历映射?
我不知道如何去掉它,但没有迭代器。
编辑:
只是为了澄清,我的工作就是实现所有的地图方法,而没有使用这三种。我难以理解如何在没有迭代器的情况下实现putAll()
等方法。
在Java中,我试图迭代地图以完成Map
接口的putAll()
方法的实现。但是,我不能使用keyset()
,entryset()
和values()
来执行此操作,这意味着我无法为此调用迭代器。如何在不使用迭代器或集的情况下遍历映射?
我不知道如何去掉它,但没有迭代器。
编辑:
只是为了澄清,我的工作就是实现所有的地图方法,而没有使用这三种。我难以理解如何在没有迭代器的情况下实现putAll()
等方法。
Map mp = new HashMap();
Set s = mp.keySet();
Iterator itr = s.iterator();
while(itr.hasNext())
{
Object value = mp.get(itr.next());
}
我不知道你为什么不能使用它。该实现在上面的代码中完成。
-1,违反了问题中的明确限制。也没有仿制药:-( – 2012-02-10 08:28:36
如果Map
是SortedMap
,那么你可以这样做:
SortedMap<K, V> partialMap = wholeMap;
while (!partialMap.isEmpty()) {
K key = partialMap./* left as an exercise to the reader */;
partialMap = partialMap.tailMap(
key,
false // exclusive, so does not include key
);
}
你可以找到tailMap
在javadoc的解释。
不能,只能与'Map
从HashMap的代码:
for (Iterator<? extends Map.Entry<? extends K, ? extends V>> i = m.entrySet().iterator(); i.hasNext();) {
Map.Entry<? extends K, ? extends V> e = i.next();
put(e.getKey(), e.getValue());
}
现在,也许你应该解释为什么你不能使用这样的迭代器。
或者给我们提供实现代码,以便我们看到你如何存储KV条目,也许我们可以帮助更多。只有通过使用Map接口的方法,除了限制使用的3种方法之外没有别的办法。
为什么不能使用这些方法中的任何一种? – Mat 2012-02-10 06:43:06
不允许。 – so1201431 2012-02-10 06:45:42
难道你不是老师吗? – Mat 2012-02-10 06:46:06