2012-05-10 2 views
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, который, как он сказал, мы будем использовать его только для метода итератора! Но я понятия не имею, что мы должны делать с этим .. Вот классом запись и методы итератора, что мы должны переопределить (реализацию):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. В моем конструкторе есть только центральная карта.

Большое спасибо за помощь!

+1

Я дал вам много намеков в этом ответе: http://stackoverflow.com/questions/10484575/iterator-in-a-2dimensional-map Я почти склонны голосовать за дублирование. – aioobe

+0

не знал, как начать ..: S не знал, как использовать этот класс Entry, который содержится в интерфейсе, который он нам дал ..: S Извините! Но спасибо, большое спасибо за вашу помощь !!! и возникла проблема уже с бэком next() .. eclipse говорит, что возвращаемый тип должен быть добавлен в Entry, а когда я это делаю, ошибка с возвращаемой переменной «toReturn» должна быть передана в Entry или String. если я передам его в String, у меня будет та же проблема, что и выше, когда я передал ее в Entry, «innerIter.next();» erro: toReturn должно быть String ... – ZelelB

+0

хорошо, не могли бы вы сказать мне, что было бы решением для следующего метода()? eclipse говорит, что существует проблема с типом return, он не может быть «String» – ZelelB

ответ

0

Вам просто нужно создать метод, который создает записи Iterator. Каждый Entry уникален из-за используемых карт. Так что вам просто нужно сделать что-то вроде:

for entryMap in map do { 
    entryMap get list of keysAndValues 
    for keyValue in keysAndValues preppend this key 
} 
+0

Это просто псевдокод, поэтому код должен быть написан вами. :П –

Смежные вопросы