除了最后一个元素,我需要迭代ArrayList
的所有元素。所以我想创建这样的迭代器。但是我没有什么实现整个迭代器的方法,我只需要覆盖hasNext()
方法,所以我想将“标准”迭代器作为子类。有什么办法吗?
最佳答案
修改迭代器以执行此遍历是很奇怪的。显而易见的事情是根据需要编写“算法”:
public static <T> void eachExceptLast(List<? extends T> list, Operation<T> op) {
Iterator<T> iter = list.iterator();
if (!iter.hasNext()) {
return;
}
T item = iter.next();
while (iter.hasNext()) {
op.run(item);
item = iter.next();
}
}
(或使用假设
RandomAccess
列表的索引。)但是,还有一种更好的方法。
list.subList(0, list.size()-1)
(用于非空列表)将返回原始列表的视图,减去最后一个元素。它不会复制,您甚至可以使用Iterator.remove
。关于java - 我可以继承“标准” arraylist迭代器吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15999765/