温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java中LinkedList链表如何实现迭代器

发布时间:2026-01-01 04:27:36 来源:亿速云 阅读:99 作者:小樊 栏目:编程语言

在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的迭代器)。你可以根据需要修改这些方法的实现,以实现自定义的迭代器行为。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI