我一直在努力優化LinkedList的一些方法。有誰知道Java默認雙鏈接LinkedList類是否被優化,以反向執行get()
操作? 例如:是否對Java的LinkedList進行了優化,以便在必要時反向獲取(索引)?
// Some LinkedList list that exists with n elements;
int half = list.size()/2;
list.get(half + 1);
會調用list.get(half + 1)
,優化了搜走反向,因爲它是一個雙向鏈表?如果您知道元素位於列表的後半部分,則從最後進行搜索並轉到中心會更有意義。
我知道使用get(index)
是O(n)
時間,你應該在遍歷LinkedList時使用迭代器,但我只是好奇。
這是正確的,在的javadoc(第二段落的Java 7)第三段:'編索引的操作列表將從頭開始或結束時,取其更接近指定index.' – yshavit
只是遍歷列表注意從性能POV來看,無論如何,LinkedList的大部分用法都是錯誤的。 – maaartinus