<!-- flowchart 箭头图标 勿删 -->
<svg style="display: none;">
<path d="M5,0 0,2.5 5,5z" id="raphael-marker-block" stroke-linecap="round" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
</svg>
<p>首先增强for循环和iterator遍历的效果是一样的,也就说增强for循环的内部也就是调用iteratoer实现的,但是增强for循环有些缺点,例如不能在增强循环里动态的删除集合内容。不能获取下标等。</p>
<h4><a id="_2"></a>结论:</h4>
<p>如果是ArrayList,用三种方式遍历的速度是for>Iterator>foreach,速度级别基本一致;<br>
如果是LinkedList,则三种方式遍历的差距很大了,数据量大时越明显(一般是超过100000级别),用for遍历的效率远远落后于foreach和Iterator,Iterator>foreach>>>for;</p>
<h4><a id="_7"></a>过程:</h4>
<p>模拟100000条数据,放入ArrayList和LinkedList,对两个List分别用三种方式进行遍历,耗时如下图所示:</p>
<pre class="blockcode"><code class="prism language-java"><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Test</span> <span class="token punctuation">{</span>
<span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span>String<span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">// 初始化</span>
List<span class="token generics function"><span class="token punctuation"><</span>String<span class="token punctuation">></span></span> arrList <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">ArrayList</span><span class="token generics function"><span class="token punctuation"><</span>String<span class="token punctuation">></span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
List<span class="token generics function"><span class="token punctuation"><</span>String<span class="token punctuation">></span></span> linkList <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">LinkedList</span><span class="token generics function"><span class="token punctuation"><</span>String<span class="token punctuation">></span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> <span class="token number">100000</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
arrList<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span> String<span class="token punctuation">.</span><span class="token function">valueOf</span><span class="token punctuation">(</span> i <span class="token punctuation">)</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
linkList<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span> String<span class="token punctuation">.</span><span class="token function">valueOf</span><span class="token punctuation">(</span> i <span class="token punctuation">)</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span> <span class="token string">"---------------------测试结果------------------------"</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span> <span class="token string">"for arrList 时间是 \t"</span> <span class="token operator">+</span> <span class="token function">testFor</span><span class="token punctuation">(</span> arrList <span class="token punctuation">)</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span> <span class="token string">"iterator arrList 时间是 \t"</span> <span class="token operator">+</span> <span class="token function">testIterator</span><span class="token punctuation">(</span> arrList <span class="token punctuation">)</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
|
|