java - 如何使用迭代器迭代替代元素?
问题描述
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6);
Iterator<Integer> it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
上面的代码将从 1 到 6 依次迭代。我们可以交替地迭代同一个列表,以便在1, 3, 5
不更改 while 循环的情况下打印它吗?
解决方案
创建您自己的Iterator
.
class SkippingIterator<T> implements Iterator<T> {
private List<T> list;
private currentPosition;
private int skipBy;
public SkippingIterator(List<T> l) {
this(l, 2);
}
public SkippingIterator(List<T> l, int skip) {
this(l, skipBy, 0);
}
public SkippingIterator(List<T> l, int skip, int startPosition) {
list = l;
skipBy = skip;
currentPosition = startPosition;
}
public boolean hasNext() {
return currentPosition < list.size();
}
public T next() {
T result = list.get(currentPosition);
currentPosition += skip;
return result;
}
}
制作你的代码
List<Integer> list = Arrays.asList(1,2,3,4,5,6);
Iterator it = new SkippingIterator<>(list);
while(it.hasNext()){
System.out.println(it.next());
}
推荐阅读
- javascript - Javascript 中的第 0 年是什么?
- python - Python-将新值插入“嵌套”列表?
- javascript - 将函数添加到子类也将使用的超类
- php - MYSQL 中的多重移动平均计算 - 在我的代码中面临速度问题
- unity3d - Unity 内存管理:加载的脚本对象中的精灵 --- 内存使用如何扩展?
- node.js - Nodejs 服务器正在运行,并且 localhost 没有在 express 项目上发送任何数据
- git - 如何在 git 中为同一命令设置多个寻呼机选项?
- javascript - 使用 javascript(jquery) 从外部 SVG 文件获取或设置 css 类值
- java - 解决另一个异常错误的异常实例的问题
- laravel - 使用 laravel where 分组时出现意外的 '}'