![](/img/trans.png)
[英]As ArrayList implements RandomAccess interface, is it faster than Array while traversing
[英]why LinkedList does not implements RandomAccess Interface to make the retrieval of elements faster?
為什么只有 ArrayList 和 Vector 實現了 RandomAccess 接口而 LinkedList 沒有? 據我了解,RandomAccess 實現的 class 可以使集合中元素的檢索速度更快。
另外,如果我嘗試制作一個自定義 class 擴展 java.util.LinkedList 並實現 RandomAccess 接口,這是否會使自定義 class 像 LinkedList 一樣?
這是實現我在第二點中所述的代碼:
public class ExtendedLinkedList extends java.util.LinkedList implements java.util.RandomAccess {
public static void main(String[] args){
ExtendedLinkedList ell = new ExtendedLinkedList();
System.out.println(ell instanceof java.util.RandomAccess); // True
System.out.println(ell instanceof java.util.LinkedList); // True
}
}
實現RandomAccess
接口不會使隨機訪問更快。
確實,它根本沒有做任何事情,真的。
它僅作為標記接口存在:它用於標記已經提供有效隨機索引訪問的列表實現。
換句話說: ArrayList
和Vector
實現了RandomAccess
,因為它們提供了有效的隨機訪問。 LinkedList
沒有實現它,因為它不提供有效的隨機訪問(從List
接口訪問特定索引可能需要迭代列表的一半)。
如果您擴展LinkedList
,那么您不應該實現RandomAccess
,除非您還更改了get(int)
的實現以提高效率(此時我會說您可能根本不應該擴展LinkedList
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.