簡體   English   中英

為什么 LinkedList 不實現 RandomAccess 接口來使元素的檢索更快?

[英]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接口不會使隨機訪問更快。

確實,它根本沒有做任何事情,真的。

它僅作為標記接口存在:它用於標記已經提供有效隨機索引訪問的列表實現。

換句話說: ArrayListVector實現了RandomAccess ,因為它們提供了有效的隨機訪問。 LinkedList沒有實現它,因為它提供有效的隨機訪問(從List接口訪問特定索引可能需要迭代列表的一半)。

如果您擴展LinkedList ,那么您不應該實現RandomAccess ,除非您還更改了get(int)的實現以提高效率(此時我會說您可能根本不應該擴展LinkedList )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM