gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 15:30:10 25 4
gpt4 key购买 nike

这是我不明白的事情,而且我的教授这周很忙,所以我不能问她。有人可以向我解释如何设置列表迭代器,并使用它返回 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com