Bağlantılı bir listede, her öğenin sonraki öğeye bir göstericisi vardır:
head -> item1 -> item2 -> item3 -> etc.
Erişmek için item3, size ITEM3 ulaşana kadar doğrudan atlayamam beri her düğümden geçen kafasından yürümek gerektiğini açıkça görebiliriz.
Böylece, her bir öğenin değerini yazdırmak istersem, şunu yazarsam:
for(int i = 0; i < 4; i++) {
System.out.println(list.get(i));
}
ne olur:
head -> print head
head -> item1 -> print item1
head -> item1 -> item2 -> print item2
head -> item1 -> item2 -> item3 print item3
Bu korkunç derecede verimsizdir çünkü her indekslediğinizde listenin başından yeniden başlar ve her öğenin üzerinden geçer. Bu, karmaşıklığınızın etkili bir şekilde O(N^2)listeyi aşmak olduğu anlamına gelir !
Bunun yerine şunu yaptım:
for(String s: list) {
System.out.println(s);
}
sonra ne olur:
head -> print head -> item1 -> print item1 -> item2 -> print item2 etc.
hepsi tek bir geçişte, yani O(N).
Şimdi, diğer uygulanmasına gidiyor Listhangi ArrayList, bu bir basit dizide tarafından desteklenmektedir. Bu durumda, yukarıdaki çapraz geçişlerin her ikisi de eşdeğerdir, çünkü bir dizi bitişiktir, bu nedenle rastgele konumlara rastgele atlamalara izin verir.