java 测试:iterator foreach for 三种迭代方式哪种更快?
Posted 三叶草地
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 测试:iterator foreach for 三种迭代方式哪种更快?相关的知识,希望对你有一定的参考价值。
代码:
public class main { public static void main(String[] p_args){ ArrayList<String> _l_string = new ArrayList<>(); for (int o_a = 0; o_a < 100000; o_a++) { _l_string.add(String.valueOf(o_a)); } c_public_countTime _countTime = new c_public_countTime(); _countTime.f_begin(); for (int i = 0; i < _l_string.size(); i++) { System.out.print(_l_string.get(i)); } String _time_for = _countTime.f_done(); _countTime.f_begin(); for (String o_a : _l_string) { System.out.print(o_a); } String _time_foreach = _countTime.f_done(); _countTime.f_begin(); for (Iterator<String> o_iterator = _l_string.iterator(); o_iterator.hasNext();) { System.out.print(o_iterator.next()); } String _time_iterator = _countTime.f_done(); System.out.println("\niterator:" + _time_iterator + "\nfor:" + _time_for + "\nforeach:" + _time_foreach ); } }
结果:可能是由于 java 内部执行的原因,不同的顺序造成的时长也各不相同,这里采集了一点数据样本。
(速度、先后顺序、时长)
#2 for:354 毫秒
#1 foreach:263 毫秒
#3 iterator:425 毫秒
小结:for 之后的 foreach 增加了速度。
=
#1 for:285 毫秒
#2 iterator:301 毫秒
#3 foreach:363 毫秒
小结:for 首次出场也获得了最快速度。
===
#3 foreach:517 毫秒
#1 for:285 毫秒
#2 iterator:478 毫秒
小结:foreach 首次出场速度不佳,for 速度跟首次出场速度一致。
=
#3 foreach:416 毫秒
#1 iterator:317 毫秒
#2 for:321 毫秒
小结:即使在 iterator 获得最快速度的时候,for 也有几乎没有差别的速度。
===
#2 iterator:396 毫秒
#3 foreach:415 毫秒
#1 for:253 毫秒
小结:for 在最后出场的时候获得了最快速度。
===
#3 iterator:417 毫秒
#1 for:332 毫秒
#2 foreach:334 毫秒
小结:for 获得了最佳速度。
总结:iterator 和 foreach 并不会提高迭代的速度。所以应该通过必要的理由来使用它们,否则还是默认 for 比较快。
以上是关于java 测试:iterator foreach for 三种迭代方式哪种更快?的主要内容,如果未能解决你的问题,请参考以下文章
Java中 forEach() 和 Iterator 与 增强for循环 的那些事儿
java中自己实现一个可以用foreach循环的类 Iterable,Iterator
java 数据结构:Iterator接口与foreach循环