创建ArraySetIterator <e>类</e>

时间:2014-08-12 02:02:41

标签: java

我正在创建一个ArraySetIterator类,并且遇到了next()方法的问题。 我做了一些研究,但似乎没有什么对我有用。我确信这是一段简单的代码,但我似乎无法弄明白......

    private class ArraySetIterator <E> implements Iterator <E> {

    private ArraySet<E> set;
    private int index = 0;

    public ArraySetIterator(ArraySet<E> set) {
        this.set = set;
    }

    public boolean hasNext() {
        return (index + 1) < set.size();
    }

    public E next() {
      ???
    }

    public void remove() {
        set.remove(index);
    }
}

2 个答案:

答案 0 :(得分:1)

next()应该增加索引并返回当前元素。另外,如果没有剩余的元素可以迭代,它应该抛出NoSuchElementException

答案 1 :(得分:1)

这有效:

public E next() {
  return set.get(index++);
}

您可能还想考虑检查hasNext()是否为真。

编辑:根据您的评论,听起来ArraySet只是在实施Set interface。所以你不能使用.get()。我认为你需要做这样的事情:

private class ArraySetIterator <E> implements Iterator <E> {

    private E[] set;
    private int index = 0;

    public ArraySetIterator(ArraySet<E> set) {
        this.set = (E[]) set.toArray();
    }

    public boolean hasNext() {
        return (index + 1) < set.length;
    }

    public E next() {
        if(hasNext) {
           return set[index++];
        } else {
           throw new NoSuchElementException();
        }
    }

    public void remove() {
        throw new UnsupportedOperationException();
    }
}