LinkedList ile ArrayList arasındaki tüm farklar nelerdir ?

soruldu: 13 Nis '13, 15:38

koraypeker's gravatar image

koraypeker
26344
cevap kabul oranı: 0%

değiştirildi: 15 Nis '13, 00:21

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183


LinkedList ve ArrayList java.util.List interface'ini implemente eden iki veri yapısıdır. İkisi arasındaki fark memory allocation ve List içerisindeki verilere erişim şeklidir.

ArrayList

ArrayList'i büyüyebilen bir array olarak düşünebiliriz. Array'in bir çok faydasını bu sınıf içerisinde görebiliriz. ArrayList elemanlarına indekleri aracılığı ile random access zamanda erişmek mümkündür. Yani ArrayList'in 4ncü elemanına ArrayList#get(int index) aracılığı bir zamanda ( BigO(1) ayrıntılı bilgi için : Big O notation )erişebiliriz.

Diğer önemli ve göz önünde bulundurulması gereken özelliği ArrayList boyutu dolduğunda kendini yaklaşık 1,5 katına çıkararak yeni bir Array oluşturur ve eski Array içeriği kopyalanır. Örneğin ArrayList boyutu 10 ise 11nci elemanı liste içine koyduğunda ArrayList boyutu 10 X 3/2+1 = 16 olur ve ilk listedeki 10 eleman kopyalanır. Boyut büyüdükçe bu maliyet de artar.

LinkedList

LinkedList sınıfı arka planda doubly linked list implementasyonudur. ArrayListte olduğu gibi boyutu ikiye katlayarak artmaz. Aksine eklenen, çıkan her eleman için liste boyutu değişir. Yani daha dinamik bir yapısı vardır. Bu faydasının yanında verilere erişmek için bütün liste üzerinden geçmek gerekebilir. Bu da veriye erişimin n zamanda (BigO(n))olacağını gösterir. Örneğin 4ncü elemana erişmek için listenin başından başlayarak 1,2,3ncü elemanlar üzerinden 4ncü elemana erişilebilir.

permanent link

cevaplandı: 17 May '13, 01:34

erencan's gravatar image

erencan
7911812
cevap kabul oranı: 40%

değiştirildi: 17 May '13, 02:55

+1 Güzel, etraflıca bir cevap vermişsiniz. ArrayList.ensureCapacity kodlarında mem* 3/ 2+ 1 formülü var yani arraylist 2 kat değil yaklaşık 1.5 kat büyüyor.

(17 May '13, 02:52) nurettin nurettin's gravatar image

@nurettin uyarın için teşekkürler. cevabımı güncelledim.

(17 May '13, 02:56) erencan erencan's gravatar image

Merhaba cevap için teşekkürler, kafama takılan bir konu var, batch işlemler için, yani örneğin binlerce verinin bir array'de toplanıp bu array üzerinden veritabanına kayıt yapılması gibi durumlarda (yani verilere sırayla erişiyoruz) LinkedList kullanmak memory anlamında gözle görülür bir fayda sağlar diyebilir miyiz?

(17 May '13, 15:24) dreampowder dreampowder's gravatar image
permanent link

cevaplandı: 13 Nis '13, 17:09

Turgay%20Can's gravatar image

Turgay Can
8.3k63798
cevap kabul oranı: 18%

Üstteki cevap aslında yeterli gibi burada da birşeyler var bakarsan iyi anlatmış.

(15 Nis '13, 03:51) Hasan Bey Hasan%20Bey's gravatar image

Tüm farkları öğrenmek için ikisinin nasıl implemente edildiğini yani kodlarını okuman gerekiyor arkadaşım.

LinkedList: http://docs.oracle.com/javase/6/docs/api/java/util/LinkedList.html ArrayList: http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html

Kod okumadan asla!!

permanent link

cevaplandı: 06 May '13, 18:00

kodmanyagha's gravatar image

kodmanyagha
3.1k132852
cevap kabul oranı: 15%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,077

Soruldu: 13 Nis '13, 15:38

Görüntüleme: 3,681 kez

Son güncelleme: 17 May '13, 15:24

powered by BitNami OSQA