如何在Java中自定義迭代器

小樊
82
2024-09-30 03:45:21
欄目: 編程語言

在Java中,要自定義迭代器,您需要按照以下步驟操作:

  1. 創(chuàng)建一個(gè)類,該類將實(shí)現(xiàn)Iterator接口。
  2. 在類中定義一個(gè)私有成員變量,用于存儲(chǔ)集合數(shù)據(jù)結(jié)構(gòu)(如列表、集合等)。
  3. 實(shí)現(xiàn)Iterator接口所需的方法,例如hasNext()、next()remove()。
  4. (可選)實(shí)現(xiàn)其他有用的方法,如peek()size()。

下面是一個(gè)簡(jiǎn)單的自定義迭代器示例,用于遍歷一個(gè)整數(shù)列表:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class CustomIntegerIterator implements Iterator<Integer> {
    private List<Integer> list;
    private int currentIndex;

    public CustomIntegerIterator(List<Integer> list) {
        this.list = list;
        this.currentIndex = -1;
    }

    @Override
    public boolean hasNext() {
        return currentIndex + 1 < list.size();
    }

    @Override
    public Integer next() {
        if (!hasNext()) {
            throw new IllegalStateException("No more elements to iterate");
        }
        currentIndex++;
        return list.get(currentIndex);
    }

    // Optional: Implement the remove method if needed
    @Override
    public void remove() {
        if (currentIndex < 0) {
            throw new IllegalStateException("No element to remove");
        }
        list.remove(currentIndex);
        currentIndex--;
    }

    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        numbers.add(4);

        CustomIntegerIterator iterator = new CustomIntegerIterator(numbers);
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }
}

在這個(gè)示例中,我們創(chuàng)建了一個(gè)名為CustomIntegerIterator的類,它實(shí)現(xiàn)了Iterator接口。我們定義了一個(gè)私有成員變量list來存儲(chǔ)整數(shù)列表,以及一個(gè)currentIndex變量來跟蹤當(dāng)前遍歷的位置。然后,我們實(shí)現(xiàn)了hasNext()、next()remove()方法。最后,在main方法中,我們創(chuàng)建了一個(gè)CustomIntegerIterator實(shí)例,并使用它遍歷一個(gè)整數(shù)列表。

0