在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