2012-10-25 100 views
2

所以我试图创建一个LinkedHashedDictionary的Iterator成员的家庭作业,但是我有关于它的类型的多个问题。Java字典迭代器类型问题

Iterator接口:

package nhUtilities.containers2; 

public interface Iterator<Element> extends Cloneable, java.util.Iterator<Element> 
{ 
    public void reset(); 
    public void advance(); 
    public boolean done(); 
    public Element get(); 
    public boolean equals (Object obj); 
    public boolean traverses (Object container); 
    public Object clone(); 
    public void setEqualTo (Iterator<Element> other); 
    public boolean hasNext(); 
    public Element next(); 
    public void remove(); 
} 

在我的代码,我有一个名为EntryIterator私有类。它扩展了一个AbstractIterator,但实现了上面的Iterator。

我目前的执行情况如下:

private class EntryIterator<Element> extends AbstractIterator<Element> 
    implements Iterator<Element> 
    { 

     protected Iterator<Key> keyIterator; 
     protected Dictionary<Key,Value> dictionary; 

     public EntryIterator(Dictionary<Key,Value> dictionary) 
     { 
      keyIterator = keys.iterator(); 
      this.dictionary = dictionary; 
     } 

     public void reset() 
     { keyIterator = keys.iterator(); } 

     /** 
     * @Requrie !this.done() 
     */ 
     public void advance() 
     { keyIterator.advance(); } 

     public boolean done() 
     { return keyIterator.done(); } 

     // public Entry<Key,Value> get() 
     // Violates initial Interface: Results in compile error. 
     // Return type must be "Element" 
     public Element get() 
     { 
      Key key = keyIterator.get(); 
      Value value = dictionary.get(keyIterator.get()); 
      return (Element) new Entry<Key,Value>(key, value); 
     } 

     public boolean traverses(Object container) 
     { 
      // TODO Iterator traverses 
      return false; 
     } 

     public void setEqualTo(Iterator<Element> other) 
     { 
      this.keyIterator = ((EntryIterator<Element>) other).keyIterator; 
      this.dictionary = ((EntryIterator<Element>) other).dictionary; 
     } 

    } 

我已经做了这个类的多个品种,关于它的类型,但他们都不是我的字典兼容。我应该保留原来的格式上面,我得到我的字典迭代器错误()函数:

public Iterator<Entry<Key,Value>> iterator() 
{ 
    return new EntryIterator<Entry<Key,Value>>(this); 
} 

的错误状态是“返回类型是不兼容的Dictionary.iterator()”

我应该改变EntryIterator类的类型类型:

private class EntryIterator<eEntry<Key,Value>> extends AbstractIterator<Element> 
implements Iterator<Element> 

我只是得到一个错误说“预期的标记语法错误‘<’”,以及其他不兼容错误在我Dictionary.Iterator()函数。

有人可以指出我正确的方向,我怎样才能连接所有这些不同类型,让他们返回我的字典合同要求?

我曾试图在课堂上询问我的问题,通过电子邮件发给老师,以及一对一地避免。任何帮助将非常感激。

回答

0

所以,这个问题实际上是我的类的实例...在这里为大家类似的问题:

private class EntryIterator extends AbstractIterator<Entry<Key,Value>> implements 
nhUtilities.containers2.Iterator<Entry<Key, Value>>