Iterator ite = Set.iterator();
Iterator ite = List.iterator();
ListIterator listite = List.listIterator();
我们可以使用Iterator
遍历Set
或List
或Map
。 但是ListIterator
只能用于遍历一个List
,它不能遍历Set
。 为什么?
我知道,主要的区别在于迭代器,我们可以只在一个方向行进,但与ListIterator
我们可以前往两个方向。 是否还有其他的区别吗? 和任何优势ListIterator
在Iterator
?
的差异在Javadoc上市的ListIterator
您可以
- 向后遍历
- 获得在任何点的迭代器。
- 在任何时候增加新的价值。
- 设置在该点的新值。
有两点不同:
我们可以使用迭代器遍历Set和List,也地图对象的类型。 虽然的ListIterator可用于遍历的列表类型的对象,而不是集合类型的对象。
也就是说,我们可以通过设置和列表,看到这里得到一个Iterator对象:
通过使用迭代器,我们可以检索集合对象仅在前进方向的元素。
方法在迭代器:
-
hasNext()
-
next()
-
remove()
Iterator iterator = Set.iterator(); Iterator iterator = List.iterator();
但是,我们得到的只是从List接口的ListIterator对象,在这里看到:
其中作为一个的ListIterator允许在任一方向(向前和向后)遍历。 所以,它有两个方法,如hasPrevious()
和previous()
比Iterator的其他。 此外,我们可以得到一个或下一个元素的索引(使用nextIndex()
和previousIndex()
分别为)
在方法的ListIterator:
- hasNext()
- 下一个()
- 以前()
- hasPrevious()
- 去掉()
- nextIndex()
- previousIndex()
ListIterator listiterator = List.listIterator();
也就是说,我们无法从Set接口的ListIterator对象。
参考: - 什么是迭代器和的ListIterator之间的区别?
迭代器是超一流的ListIterator的。
下面是他们之间的区别:
- 随着
iterator
你只能向前移动,但随着ListIterator
,你可以一边看元素也移动backword。 - 随着
ListIterator
您可以在遍历任何一点,这是不可能获得的指标iterator
秒。 - 随着
iterator
,你可以只检查可用与否下一个元素,但在listiterator
你可以检查一个和下一个元素。 - 随着
listiterator
你可以在任何时候添加新的元素,在遍历。 不可能的iterator
。 - 随着
listiterator
可以修改,而穿越的元素,这是不可能的iterator
。
迭代器外观和感觉:
public interface Iterator<E> {
boolean hasNext();
E next();
void remove(); //optional-->use only once with next(),
dont use it when u use for:each
}
的ListIterator外观和感觉:
public interface ListIterator<E> extends Iterator<E> {
boolean hasNext();
E next();
boolean hasPrevious();
E previous();
int nextIndex();
int previousIndex();
void remove(); //optional
void set(E e); //optional
void add(E e); //optional
}
优势ListIterator
在Iterator
是我们可以在遍历使用的ListIterator名单在任何时间点添加元素 。