java设计模式之迭代器
Jdk里最不缺得就是迭代器,自己写一个,加深下理解
public class CustomList<T> implements Iterable<T> { private final Object[] items = new Object[20]; private int size = 0; public void add(T t) { items[size] = t; size++; } public T get(int index) { return (T) items[index]; } public T remove(int index) { if (index > size - 1 || index < 0) { throw new ArrayIndexOutOfBoundsException("下标越界"); } T r = (T) items[index]; for (int i = index; i < size - 1; i++) { items[i] = items[i + 1]; } items[--size] = null; return r; } /** * 正向迭代 * * @return */ public Iterator<T> iterator() { return new Iterator<T>() { int index = 0; @Override public boolean hasNext() { return index < size; } @Override public T next() { return (T) items[index++]; } }; } /** * 反向迭代 * * @return */ public Iterator<T> reverseIterator() { return new Iterator<T>() { int index = size - 1; @Override public boolean hasNext() { return index >= 0; } @Override public T next() { return (T) items[index--]; } }; } @Override public String toString() { return "CustomList{" + "items=" + Arrays.toString(items) + ", size=" + size + '}'; } public static void main(String[] args) { CustomList<Integer> list = new CustomList<>(); for (int i = 0; i < 10; i++) { list.add(i); } Iterator<Integer> iterator = list.iterator(); while (iterator.hasNext()) { System.out.print(iterator.next() + ","); } System.out.println(); Iterator<Integer> reverseIterator = list.reverseIterator(); while (reverseIterator.hasNext()) { System.out.print(reverseIterator.next() + ","); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗