我們有一個家庭作業,實現一個類,該類創建一個將成爲字符串的2D維地圖的對象。 centralMap = new HashMap<String, Map<String,String>>
。教授給了我們一個界面,其中包含我們應該重新定義的方法,比如put方法(public String put(final String row, final String column, final String value)
)get方法(public String get(final String row, final String column)
)和其他一些方法..以及我無法重新定義的方法是迭代器方法。 。在他給出的接口中,有一個Entry類,他說,我們只會將它用於迭代器方法!但是我不知道應該怎樣用它做什麼。這裏是類條目,而我們應該重新定義iterator方法(實現):Map.Entry重定義,用於2維地圖的迭代器
final class Entry
{
/** First Key. */
private final String key1;
/** Second Key. */
private final String key2;
/** Value. */
private final String value;
/** Cponstructor for a new Tripel.
* @param key1 First Key.
* @param key2 Second Key.
* @param value Value.
*/
public Entry(final String key1, final String key2, final String value)
{
this.key1 = key1;
this.key2 = key2;
this.value = value;
}
public String getFirstKey()
{
return key1;
}
public String getSecondKey()
{
return key2;
}
public String getValue()
{
return value;
}
@Override public boolean equals(final Object anything)
{
if(anything == null)
return false;
if(getClass() != anything.getClass())
return false;
final Entry that = (Entry)anything;
return Objects.equals(getFirstKey(), that.getFirstKey())
&& Objects.equals(getSecondKey(), that.getSecondKey())
&& Objects.equals(getValue(), that.getValue());
}
// CHECKSTYLE- Magic Number
@Override public int hashCode()
{
int hash = 7;
hash = 17 * hash + Objects.hashCode(getFirstKey());
hash = 17 * hash + Objects.hashCode(getSecondKey());
hash = 17 * hash + Objects.hashCode(getValue());
return hash;
}
// CHECKSTYLE+ Magic Number
@Override public String toString()
{
return String.format("(%s, %s, %s)", getFirstKey(), getSecondKey(), getValue());
}
}
,我們應該重新定義iterator方法是這樣的一種: @Override Iterator<Entry> iterator();
我應該如何繼續?我聽說我們應該爲迭代器實現一個新類。 告訴我你是否需要我實現的類(並且它實現了他給出的接口)來知道我如何將嵌套映射放入另一個類中。 。因爲嵌套地圖只是在put方法中創建的..在我的構造函數中只有centralMap。
非常感謝您的幫助!
我給你足夠的暗示在這樣的回答:http://stackoverflow.com/questions/10484575/iterator-in-a-2dimensional-map我幾乎傾向於投票關閉重複。 – aioobe
不知道如何開始..:S不知道如何使用它給他們的接口中包含的這個Entry類:S對不起!但是,謝謝,非常感謝您的幫助!並且有一個問題已經bey next().. eclipse說返回類型應該被轉換爲Entry,並且當我這樣做時,返回變量「toReturn」的錯誤應該被轉換爲Entry或者String。如果我將它轉換爲字符串,我將遇到與上面相同的問題,當我將它轉換爲Entry時,「innerIter.next();」 erro:toReturn應該是String ... – ZelelB
好的,你應該告訴我,next()方法的解決方案是什麼? eclipse是說返回類型存在問題,它不能是「String」 – ZelelB