簡體   English   中英

如何在listIterator()實現中使用超類iterator()?

[英]How to use super class iterator() in the listIterator() implementation?

我有兩個類:實現集合的MyArrayCollection和擴展MyArrayCollection並實現List的MyArrayList。 第一個有iterator()。 如何在第二個類的listIterator()實現中使用它? 我的丑陋嘗試:

class MyArrayCollection implements Collection<Integer> {
    ...
    class CIterator implements Iterator<Integer> {
        @Override
        public boolean hasNext() {
            return pos < size;
        }

        @Override
        public Integer next() {
            return array[++pos];
        }
    }

    @Override
    public Iterator<Integer> iterator() {
        return new CIterator();
    }
    ...
}

class MyArrayList extends MyArrayCollection implements List<Integer> {
    ...
    class CListIterator extends CIterator implements ListIterator<Integer> {
        ...
    }

    @Override
    public ListIterator<Integer> listIterator() {
        return new CListIterator();
    }
    ...
}

我不確定我是否理解您的問題,但我想您想使用從iterator()方法獲取的Iterator<Integer>實例。 當然可以,對於這樣的實例:

class CListIterator extends CIterator implements ListIterator<Integer>
{
  private final Iterator<Integer> iterator;
  public CListIterator() {
    super();
    this.iterator = iterator();
  }

  ...
}

然后,您可以使用該迭代器實例實現ListInteger的方法。 但是問題在於您需要實現以下功能:

  • 向后迭代
  • 隨時獲取索引
  • 隨時添加新值
  • 在那時設置一個新值

而且迭代器實例可能不會對您有太大幫助。 例如, ArrayList.listIterator迭代器根本不使用ArrayList.iterator

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM