在Java中,正常的迭代器是有始有终的。
但是在实际应用中,我们有时候很可能需要的不只是迭代一遍,而是无限循环迭代,例如实现图片轮播、音乐列表轮播等等。
为了开发方便,于是就有了这么一个需求:我们需要一个可以无限循环迭代的迭代器。
实现的原理就像把一个集合头尾相接形成环形,让它可以无限地遍历到下一个元素。
我把这个迭代器起名为LoopIterator,Loop是环形的意思。
废话不多说,上代码:
import com.sun.istack.internal.NotNull;
import java.util.*;
/**
* 无限循环迭代器
* 2022/2/18
*
* @author Rex Chou
* @version 1.0
*/
public class LoopIterator<E> implements ListIterator<E> {
public LoopIterator(@NotNull List<E> list) {
this.list = list;
iterator = list.listIterator();
}
private List<E> list;
private ListIterator<E> iterator;
/**
* 获取下一个元素
*
* @return
*/
@Override
public E next()