1 |
|
这样类似的代码,应该大家都写过无数次了。这是foreach的语法, 可以看这篇文章Java语法糖1:可变长度参数以及foreach循环原理。该文中讲到,集合使用foreach会去调用它的迭代器(iterator),数组调用时就是调用它的自身的循环。
要获取iterator,必须要实现Iterable接口
Implementing this interface allows an object to be the target of the “for-each loop” statement. – jdk
该接口挺简单的就不在这里多讲。
当阅读集合源码的时候,会时不时看见ListIterator这个迭代器
ListIterator(列表迭代器)
ListIterator允许使用者在任意方向(正、反向)进行遍历列表,在迭代过程中修改列表,并获取迭代器在列表中的当前位置
但是在迭代过程中修改列表,可能会报 UnsupportedOperationException,当然要看具体的列表类,是否实现了修改操作。
如果需要使用到,反向遍历或在迭代期间做修改操作的话,可以考虑使用列表迭代器
Spliterator(分离器)
An object for traversing and partitioning elements of a source –jdk
java8引入的,用与遍历和划分源元素的对象。Spliterator,象Iterator,用来遍历源中的元素。
Spliterator被设计来最大的特点就是,支持有效的并行遍历(通过分解以及单元素迭代),除了顺序遍历之外。
测试并行遍历代码
1 |
|
参考: 1. Spliterator-oracle
对自己的现状不满意只有付出更多的努力去改变它
如果有不对的地方或建议,请指出,谢谢啦