У нас есть домашняя работа, чтобы реализовать класс, который создает объект, который будет двумерной картой строк. 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, который, как он сказал, мы будем использовать его только для метода итератора! Но я понятия не имею, что мы должны делать с этим .. Вот классом запись и методы итератора, что мы должны переопределить (реализацию):Map.Entry redefinition, для итератора 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());
}
}
и методы итератора, что мы должны переопределить эту один: @Override Iterator<Entry> iterator();
Как мне продолжить? Я слышал, что мы должны реализовать новый класс только для итератора. скажите мне, нужен ли вам класс, который я реализовал (и который реализует интерфейс, который он дал), чтобы знать, как я вставляю вложенную карту в другую. потому что вложенная карта только создается в методе put. В моем конструкторе есть только центральная карта.
Большое спасибо за помощь!
Я дал вам много намеков в этом ответе: http://stackoverflow.com/questions/10484575/iterator-in-a-2dimensional-map Я почти склонны голосовать за дублирование. – aioobe
не знал, как начать ..: S не знал, как использовать этот класс Entry, который содержится в интерфейсе, который он нам дал ..: S Извините! Но спасибо, большое спасибо за вашу помощь !!! и возникла проблема уже с бэком next() .. eclipse говорит, что возвращаемый тип должен быть добавлен в Entry, а когда я это делаю, ошибка с возвращаемой переменной «toReturn» должна быть передана в Entry или String. если я передам его в String, у меня будет та же проблема, что и выше, когда я передал ее в Entry, «innerIter.next();» erro: toReturn должно быть String ... – ZelelB
хорошо, не могли бы вы сказать мне, что было бы решением для следующего метода()? eclipse говорит, что существует проблема с типом return, он не может быть «String» – ZelelB