0

文字列の 2D マップとなるオブジェクトを作成するクラスを実装するための宿題があります。centralMap = new HashMap<String, Map<String,String>>. public String put(final String row, final String column, final String value)教授は、put メソッド ( )、get メソッド ( ) など、再定義する必要があるメソッドを含むインターフェイスを提供してくれましたpublic String get(final String row, final String column)。再定義できなかったのは iterator メソッドです。彼が提供したインターフェイスには、クラス Entry があり、彼は、それを iterator メソッドだけに使用すると言いました。しかし、それをどうすればいいのかわかりません..これがクラス 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());
    }

}

再定義する必要がある iterator メソッドは次のとおり@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 に答える