遍历 List 之效率
生活随笔
收集整理的這篇文章主要介紹了
遍历 List 之效率
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
1. 常用遍歷 List 之方法
?
遍歷 List 方法有三:
a) for (Iterator iterator = ls.iterator(); iterator.hasNext();)
b)?for (int i = 0; i < ls.size(); i++)
c)?for (Object object : ls) (java5+)
常用 List 實現有二:
a)?java.util.ArrayList
b)?java.util.LinkedList
?
效率如何?
?
2. 遍歷方法之小誤差驗證
?
輸出:
class java.util.ArrayListiterator-nanotime :7199195
arraylike-nanotime:1920143
foreach-nanotime :3775320
class java.util.LinkedList
iterator-nanotime :5430188
arraylike-nanotime:9148595046
foreach-nanotime :1677620 ?
方法:
?
private static void nanoLoop(List ls){System.out.println(ls.getClass());{ // iteratorlong b = System.nanoTime();for (Iterator iterator = ls.iterator(); iterator.hasNext();) {Object object = (Object) iterator.next();}System.out.println("iterator-nanotime :"+(System.nanoTime()-b));}{ // array-likelong b = System.nanoTime();for (int i = 0; i < ls.size(); i++) {Object object = (Object) ls.get(i);}System.out.println("arraylike-nanotime:"+(System.nanoTime()-b));}{ // foreachlong b = System.nanoTime();for (Object object : ls) {Object s = (Object) object;}System.out.println("foreach-nanotime :"+(System.nanoTime()-b));} }private static List initList(List ls,int count){for (int i = 0; i < count; i++) {ls.add("aaaa");}return ls; }public static void main(String[] args) {nanoLoop(initList(new ArrayList(),10*10000));nanoLoop(initList(new LinkedList(),10*10000)); } ??
3. 魯莽結論
?
?*?黑盒情況下:foreach >?iterator > arraylike
?*?ArrayList :arraylike>foreach >iterator
?*?LinkedList:foreach >iterator >>>arraylike
?
4. 刨根問底
?
read the fk source code -_-
?
?
已有 0 人發表留言,猛擊->>這里<<-參與討論
JavaEye推薦
- —軟件人才免語言低擔保 赴美帶薪讀研!—
轉載于:https://my.oschina.net/trydofor/blog/9974
總結
以上是生活随笔為你收集整理的遍历 List 之效率的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据源名称和 64 位操作系统
- 下一篇: MSSQL字符串处理-清除指定不连续或连