Java’da LinkedListlere Giriş ve LinkedListlerin Çalışma Mantığı

171
views

Bir önceki dersimizde String sınıfı ve metotları konusunu işlemiştik. Bu yazımızda ise LinkedListler konusunu işleyeceğiz.

LinkedListlere geçmeden önce ArrayList ile ilgili örnek yapmak istiyorum. Ardından ArrayListler ile LinkedListler arasında ne gibi farklar var bunu göreceğiz.

ArrayListimizi oluşturduk ve ardından arrayimizi ekrana yazdırdık.

Örneğin biz Java’dan sonra node.js yazilim dilini eklemek istiyorsak ne yapmamız gerekir;

Burada java ekleme işlemini bellekte tuttuğu değerleri bir alt satıra veya kutucuğu kaydırıp 1. indexte yeni girilen değer için bir alan oluşturarak yapıyor şeklinde düşünebilirsiniz. Fakat çok büyük ArrayListlerde bu çok fazla maliyetli ve performans kaybına sebep oluyor. İşte böyle durumlarda performans kaybı yaşamamak adına LinkedListler kullanılıyor. LinkedListleri yapısı ArrayListlerin yapısından biraz farklı. ArrayListlerde bir referansa değerler atanıyordu. Fakat LinkedListlerde referansımız sadece bir objeyi gösteriyor. Yukarıda örnekten yola çıkarak bahsetmek gerekirse referansımız Java objesini gösterecekti fakat java objeside bir referans taşıyor ve o da bir sonraki değeri gösteriyor.

Peki neden böyle bir yapıya ihtiyaç duyulmuş?

ArrayListte 1 milyon tane veriniz varsa sizin bunları tek tek kaydırmanız gerekiyor. Ancak LinkedListte en fazla 2 tane objenin referansını değiştirmeniz yeterli olacaktır.

Yeni bir değer eklemek istediğinizde LinkedList kullanıldığında java bizim için otomatik olarak bellekte bir obje oluşturuyor biz değeri giriyoruz ve referansını bir sonraki değeri gösteriyor. Yani biz milyon tane kaydı tek tek kaydırmak yerine arada bir obje oluşturduk ve yeni değeri ona yazdık.

Yine aynı şekilde 1 değeri silmek istediğimizde ArrayListte silinen objenin yerine aşağıdaki değerleri tek tek yukarı kaydırarak dolduruyor. Fakat LinkedListler kullandığımızda objeyi siliyor ardından öncesi ve sonrasındaki objelerin referanslarını birbirine bağlıyor.

Bu sayede performans açısından çok büyük miktarda kazancımız olmuş oluyor. LinkedListler bu şekilde büyük bir fayda sağlıyor fakat bellekte ArrayListlere göre daha fazla yer kaplıyor. Bu da LinkedListlerin dezeavantajlarından birisi. LinkedListlerin mantığı bu şekildedir.

Şimdi örnek üzerinden anlamaya çalışalım;

Yukarıdaki gibi LinkedListimizi oluşturduk ve bunu ekrana yazmış olduğumuz metot ile ekrana bastırdık.

Bazen LinkedListler üzerinde daha complex işlemler yapmamız gerekebilir. Böyle durumlarda LinkedListlerin üzerinde dolaşmamızı sağlayacak Iterator lar oluşturmamız gerekiyor.

Şimdi ekrana yazdırma işlemini iterator oluşturarak yapmaya çalışalım;

Yukarıdaki örnekte iterator oluşturarak listeyi_bastir() metodunu ekrana yazdırdık.

ArrayListlerde bir değer eklediğimiz gibi LinkedListlerde de aynı şekilde değeri ekleyebiliriz.

add() metodu ile index değerini vererek yeni değerimizi ekleyebiliyoruz.

Bir sonraki derse geçmek için tıklayınız.

 

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz