LinkedList'leri optimize etmenin bazı yolları üzerinde çalışıyorum. Java varsayılan çift bağlantılı LinkedList sınıfının tersine get()
işlemlerini yapmak için optimize edilmiş olup olmadığını bilen var mı? Örneğin :Java'nın LinkedList, gerektiğinde geri (dizin) almak için optimize edilmiş mi?
// Some LinkedList list that exists with n elements;
int half = list.size()/2;
list.get(half + 1);
list.get(half + 1)
çağrı arama optimize etmek ve onu doubly bağlı liste olduğundan tersten gitmek istiyorsunuz? Sonundan arama yapmak ve öğenin listenin ikinci yarısında olduğunu biliyorsanız merkeze doğru gitmek daha mantıklı olacaktır.
get(index)
'un O(n)
saatini kullandığını biliyorum ve bir LinkedList'i kullanırken bir yineleyici kullanmalısınız, ancak sadece merak ediyorum.
Burada javadocs'un üçüncü paragrafında (Java 7'de ikinci paragraf) bulunur: 'Listeye endekslenen işlemler, listeyi baştan sona veya sonuna kadar, hangisi daha önce belirtilen dizine daha yakınsa, '' – yshavit
performans POV'undan, LinkedList’in bir çok kullanımının bir hata olduğunu unutmayın. – maaartinus