JVM如何知道哪些資料結構是隨機查詢哪些是順序查詢?
阿新 • • 發佈:2018-12-15
最具代表性的是:ArrayList和LinkedList ArrayList: public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializable 可以看到ArrayList繼承AbstractList類,實現List、RandomAccess、Cloneable、Serializable介面。 實現隨機查詢最為關鍵的是實現介面:RandomAccess 我們可以進一步看看RandomAccess介面: public interface RandomAccess { } 它僅僅作為一個隨機訪問的標誌介面。有了這個標誌介面JVM在編譯執行的時候就能知道這是一個隨機訪問的資料介面,成功實現隨機訪問。 LinkedList:
if (list instanceof RandomAccess){ System.out.println("實現了RandomAccess介面,不使用迭代器"); for (int i = 0;i < list.size();i++){ System.out.println(list.get(i)); } }else{ System.out.println("沒實現RandomAccess介面,使用迭代器"); Iterator it = list.iterator(); while(it.hasNext()){ System.out.println(it.next()); } } }
注:如有不對之處歡迎指正,謝謝!。