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 List
hangi 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.