我想知道如何在2D維度HashMap中迭代?我創建一個Object TrueStringMap2D,它執行以下操作:它將是一個地圖2D,我的意思是2個鍵和一個值。迭代器在2D維度映射
但是這裏實現的迭代器沒有功能..我不知道如何重新定義TrueStringMap2D中的迭代器方法:S(如果可能應該在迭代器()函數中刪除) 任何人都可以提供幫助嗎? 非常感謝!
我想知道如何在2D維度HashMap中迭代?我創建一個Object TrueStringMap2D,它執行以下操作:它將是一個地圖2D,我的意思是2個鍵和一個值。迭代器在2D維度映射
但是這裏實現的迭代器沒有功能..我不知道如何重新定義TrueStringMap2D中的迭代器方法:S(如果可能應該在迭代器()函數中刪除) 任何人都可以提供幫助嗎? 非常感謝!
我會將問題重新解釋爲我喜歡回答的類似問題,然後希望這個問題的答案對您有用。
這是我會回答這個問題:
如何編寫一個迭代器,超過在
Map<String, Map<String, String>>
所有值迭代?
這是我會怎麼解決這個問題:
class TwoDimIterator implements Iterator<String> {
Iterator<Map<String, String>> outerIter;
Iterator<String> innerIter = Collections.<String>emptyList().iterator();
public TwoDimIterator(Map<String, Map<String, String>> twoDimMap) {
outerIter = twoDimMap.values().iterator();
advanceInner();
}
@Override
public boolean hasNext() {
return innerIter.hasNext();
}
@Override
public String next() {
String toReturn = innerIter.next();
advanceInner();
return toReturn;
}
private void advanceInner() {
while (!innerIter.hasNext()) {
if (!outerIter.hasNext()) {
innerIter = Collections.<String>emptyList().iterator();
return;
}
innerIter = outerIter.next().values().iterator();
}
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
}
測試代碼:
class Test {
public static void main(String[] args) {
// Create a map
Map<String, Map<String, String>> twoDimMap =
new HashMap<String, Map<String, String>>();
// Fill it
Map<String, String> innerA = new HashMap<String, String>();
innerA.put("1", "A1");
innerA.put("2", "A2");
Map<String, String> innerB = new HashMap<String, String>();
innerB.put("1", "B1");
innerB.put("2", "B2");
twoDimMap.put("A", innerA);
twoDimMap.put("B", innerB);
// Create an iterator for the values:
Iterator<String> twoDimIter = new TwoDimIterator(twoDimMap);
while (twoDimIter.hasNext())
System.out.println(twoDimIter.next());
}
}
輸出:
A2
A1
B2
B1
任何人都可以幫助嗎? – ZelelB
[我不認爲它想要閱讀所有這些。](http://meta.stackexchange.com/a/129787/175248)如果你能減少你的代碼以適應你的問題的範圍,那麼會是一個巨大的好處。 – Makoto
我想重新定義迭代器方法,它將遍歷包含已映射映射的映射。 (隨着我發佈的課程條目) – ZelelB