MST

星途 面试题库

面试题:Java中迭代器模式如何在自定义集合类中实现

假设你有一个自定义的集合类MyList,它存储了一组整数。请使用Java迭代器模式为MyList类实现一个迭代器,使得能够按顺序遍历MyList中的所有元素。要求写出MyList类、迭代器接口以及具体迭代器实现类的代码。
34.9万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
import java.util.Iterator;

// 自定义集合类MyList
class MyList {
    private int[] data;
    private int size;

    public MyList(int capacity) {
        data = new int[capacity];
        size = 0;
    }

    public void add(int num) {
        if (size < data.length) {
            data[size++] = num;
        }
    }

    public Iterator<Integer> iterator() {
        return new MyListIterator();
    }

    // 迭代器实现类
    private class MyListIterator implements Iterator<Integer> {
        private int currentIndex = 0;

        @Override
        public boolean hasNext() {
            return currentIndex < size;
        }

        @Override
        public Integer next() {
            if (hasNext()) {
                return data[currentIndex++];
            }
            throw new RuntimeException("没有更多元素");
        }
    }
}

你可以使用以下方式测试这个代码:

public class Main {
    public static void main(String[] args) {
        MyList myList = new MyList(5);
        myList.add(1);
        myList.add(2);
        myList.add(3);

        Iterator<Integer> iterator = myList.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }
}

在上述代码中:

  1. MyList 类表示自定义的集合类,内部使用数组 data 存储整数,并通过 size 记录实际存储的元素个数。
  2. add 方法用于向集合中添加元素。
  3. iterator 方法返回一个实现了 Iterator 接口的迭代器对象。
  4. MyListIteratorMyList 的内部类,实现了 Iterator 接口的 hasNextnext 方法,用于按顺序遍历集合中的元素。
  5. Main 类中,创建了 MyList 对象并添加了一些元素,然后通过迭代器遍历并输出这些元素。