0

我们有一个作业,要实现一个类,该类创建一个对象,该对象将是字符串的二维映射。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。

非常感谢你的帮助!!

4

1 回答 1

0

您只需要创建一个创建Iterator条目的方法。每个Entry都是独一无二的,因为使用了地图。因此,您只需要执行以下操作:

for entryMap in map do {
  entryMap get list of keysAndValues
  for keyValue in keysAndValues preppend this key
}
于 2012-05-10T11:40:49.060 回答