在Java中,LinkedList类已经实现了Iterable接口,因此可以直接使用for-each循环进行迭代。但是,如果你想自定义迭代器的行为,可以通过实现ListIterator接口来实现。
以下是一个简单的示例,展示了如何为LinkedList实现一个自定义的迭代器:
import java.util.LinkedList;
import java.util.ListIterator;
public class CustomLinkedList<T> extends LinkedList<T> {
@Override
public ListIterator<T> listIterator() {
return new CustomListIterator();
}
private class CustomListIterator implements ListIterator<T> {
private int cursor = 0;
private ListIterator<T> iterator = CustomLinkedList.this.listIterator();
@Override
public boolean hasNext() {
return cursor < CustomLinkedList.this.size();
}
@Override
public T next() {
if (!hasNext()) {
throw new IndexOutOfBoundsException("No more elements");
}
return iterator.next();
}
@Override
public boolean hasPrevious() {
return cursor > 0;
}
@Override
public T previous() {
if (!hasPrevious()) {
throw new IndexOutOfBoundsException("No previous elements");
}
cursor--;
return iterator.previous();
}
@Override
public int nextIndex() {
return cursor;
}
@Override
public int previousIndex() {
return cursor - 1;
}
@Override
public void remove() {
iterator.remove();
}
@Override
public void set(T t) {
iterator.set(t);
}
@Override
public void add(T t) {
iterator.add(t);
}
}
public static void main(String[] args) {
CustomLinkedList<Integer> list = new CustomLinkedList<>();
list.add(1);
list.add(2);
list.add(3);
for (Integer item : list) {
System.out.println(item);
}
}
}
在这个示例中,我们创建了一个名为CustomLinkedList的自定义链表类,它继承了LinkedList类。我们重写了listIterator()方法,返回一个实现了ListIterator接口的CustomListIterator对象。
CustomListIterator类实现了ListIterator接口的所有方法。在这个例子中,我们只是将所有方法调用委托给了内部的iterator对象(即原始LinkedList的迭代器)。你可以根据需要修改这些方法的实现,以实现自定义的迭代器行为。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。