java - 如何返回列表中元素的列表迭代器

标签 java

这是我不明白的事情,而且我的教授这周很忙,所以我不能问她。有人可以向我解释如何设置列表迭代器,并使用它返回 ArrayList 中的元素吗?谢谢。这是“public Iterator iterator()”方法,我已经尽力了,但无法完成。

public class ArrayList<E> implements List<E> {
private E[] elementData;
private int elementCount;
private int capacityIncrement;
private static final int INVALID_INDEX=-1;
private static final int DEFAULT_CAPACITY = 100;

public ArrayList() {

    capacityIncrement = 0;
    elementData = (E[]) new Object[DEFAULT_CAPACITY];


}

public ArrayList(int capacity) {

    this.capacityIncrement = 0;
    this.elementData = (E[]) new Object[capacity];


}

public ArrayList(int capacity, int increment) {

    this.capacityIncrement = increment;
    this.elementData = (E[]) new Object[capacity];

}

public int size() {
    return elementCount;

}

public boolean isEmpty() {
    if (elementCount != 0) return false;
    else return true;
}

public void clear() {
        elementCount = 0;

}

public boolean contains(E element) { //check back
    for (int i = 0; i < elementCount; i++) {
        if (elementData[i].equals(element)) return true; //== vs. .equals
    }
    return false;
}

public void add(E element) {
    elementCount++;
    elementData[elementCount] = element;
}

public boolean remove(E element) {
    for (int i = 0; i < elementCount; i++) { //while vs. loop
        if (elementData[i].equals(element)) {
            for (int j = 0; j <= (elementCount - i); j++){
            elementData[i] = elementData[i++];
            elementCount = elementCount - 1;
            return true;
            }


        }

    }
    return false;
}

public E elementAt(int index) {

    return elementData[index]; //elementdata vs. elementcount
}

public int indexOf(E element) {


    for (int i = 0; i < elementCount; i++) //while vs. loop
        if (elementData[i].equals(element)) {
            return i;

        } return INVALID_INDEX;


}

public void insertElementAt(E element, int index) {
    elementCount = elementCount + 1;
    for (int i = index; i < elementCount; i++) {
        elementData[i++] = elementData[i];
    }
    elementData[index] = element;
     //shift right (look at notes)
}

public void removeElementAt(int index) {
    for (int i = index; i < elementCount; i++) {
        elementData[i] = elementData[i++];

    }
    elementCount = elementCount - 1;
}

public void setElementAt(E element, int index) {

    elementData[index] = element;
}

public void removeDuplicates() {

    for (int i = 0; i < elementCount; i++) {
        for (int j = 0; j < elementCount; j++) {
            if (elementData[i].equals(elementData[j])) {
                elementData[i] = elementData[i++];
                elementCount = elementCount - 1;
            }
        }
    }
}

public void trimToSize() { //don't need to add trims to removing methods??



}

public Iterator<E> iterator() {
     Iterator itr = new list.iterator();
     while (itr.hasNext()) {

     }
    /**
 *
 * @return  a list iterator of the elements
 * in this list (in proper sequence).
 */

}

public Iterator<E> iterator(int index) {
    throw new UnsupportedOperationException("Not supported yet.");
}



private static class ArrayListIterator<E> implements Iterator<E> {
    private ArrayListIterator(ArrayList c) {
      /**
      * Returns a list iterator of the elements in this list (in proper sequence).
      * @param c list to be iterated upon
      */
        elementData=c;

    }


 }

 }

最佳答案

Iterator 只是一个接口(interface),指定实现类必须提供 next() 和 hasNext()。

一个简单的第一步实现是让您的数组列表实现 Iterator 接口(interface)。

您将添加一个“currentIndex”成员和一个类似的方法

Iterator<E> iterator() { return this; }

next() 和 hasNext() 将根据需要使用 currentIndex 和数组大小。

显然,如果您想在同一个集合上拥有多个迭代器,这会中断,因此下一步是将迭代器内容重构为一个单独的类。

关于java - 如何返回列表中元素的列表迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9628827/

相关文章:

java - 如何从执行插入操作的 DB2 存储过程将生成的键返回到 JDBC?

java - 容器中的 Servlet 实例

Java JDK 空间不足

java - 在android中将字符串转换为 float

java - 如何通过JDBC提供数据库独立性?

java - 当 prometheus 端点调用时 MockMvc 收到 404

java - 预处理/净化 Twitter 数据

java - 继承GWT模块中的rt.jar源码

java - 如何使用java中的字符串分词器从字符串中逐个获取字符

java - 根据字符串中的数字对字符串进行排序,Java