我们有一个功课来实现一个类,它创建一个将成为字符串二维图的对象。 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。
非常感谢你的帮助!!
答案 0 :(得分:0)
您只需创建一个方法,即创建Iterator
个条目。由于使用过的地图,每个Entry
都是唯一的。所以你只需要做一些事情:
for entryMap in map do {
entryMap get list of keysAndValues
for keyValue in keysAndValues preppend this key
}