我们有一个作业,要实现一个类,该类创建一个对象,该对象将是字符串的二维映射。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,他说,我们只用它来做迭代器方法!但我不知道我们应该用它做什么.. 这是类 Entry,以及我们应该重新定义(实现)的迭代器方法:
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());
}
}
我们应该重新定义的迭代器方法是这个:@Override Iterator<Entry> iterator();
我应该如何进行?我听说我们应该为迭代器实现一个新类。告诉我你是否需要我实现的类,(以及实现他提供的接口的类)知道我如何将嵌套映射放在另一个类中等等。因为嵌套地图只是在 put 方法中创建的。在我的构造函数中只有 centralMap。
非常感谢你的帮助!!