Java’da Array (Dizi) Yapısı — 2

Fatih GÜL
2 min readAug 24, 2018

--

Bir önceki yazıda array yapısını, nasıl oluştuğunu, dizinin içerisine eleman eklemeyi ve eklediğimiz elemanlara nasıl ulaştığımızı anlatmıştık. Bu yazıda da amacım array yapısının Java’da nasıl implemente edildiği olacak.

Öncelikle Java’da oluşturulan dizilerin sabit bir uzunluğu vardır. Bu diziler oluşturulurken dizinin uzunluğunu belirlemek zorundayız.

char[] charArray = new char[2];

Peki dizinin kapasitesini dinamik olarak arttırmak istesem nasıl olur? Hem diziyi oluştururken uzunluğu vermek zorundayım hemde bu dizinin kapasitesini dinamik olarak arttırmak istiyorum. Şöyle bir senaryo uygulayabilirim: Varsayılan olarak 10 eleman alabilen bir dizi oluştururum, sonra her eleman eklerken dizinin uzunluğuna bakarım, eğer dizideki eleman sayısı dizinin uzunluğuna eşitse, hemen yeni bir tane, bu dizinin 2 katı uzunluğunda bir dizi oluşturur, eski dizideki elemanları oluşturduğum yeni diziye taşırım.Böylece dizinin uzunluğunu dinamik hale getirmiş olurum.

Bu olayı film listesi tutan bir dizi olarak düşünelim ve listeye yeni bir film ekledikçe film listesi dolduğunda, film listemizin kapasitesi dinamik olarak artsın. Aşağıdaki kod örneğini inceleyebiliriz :

Bu örnek üzerinden devam edelim. Diyelim ki bu film listesinde yüzlerce film var ve ben arama butonuna basıp filmin adını girip arama yapmak istedim. Dizinin sıfırıncı elamanından başlayarak film adını bulana kadar film listesini tutan dizinin içerisinde arama yapılır. Filmi bulursam ilgili film getirilir, bulunamazsa film bulunamadı diye uyarı verilir.

Şimdi bu listeye yeni bir film eklemek istediğimde önce dizinin kapasitesi yeterli mi kontrol ettikten sonra, dizinin en son indexine yeni eklenen filmi setliyorum.

Peki ben dizinin en sonuna değilde ortasına veya istediğim yere filmi eklemek istesem nasıl yaparım? Öncelikle yine film dizisinin kapasitesi yeterli mi kontrol ettikten sonra, eklemek istediğim index dolu mu, yani orda bir film var mı buna bakarım.Bunun içinde dizinin içerdiği eleman sayısı eklenmek istenen index den büyükse, eklenmek istenen index dahil olmak üzere burdaki film ve daha sonraki filmler sırasıyla bir sonraki indexe kaydırılır ve yeni gelecek film için istenilen index boşaltılır ve bu indexe istenilen film setlenir.

Şimdi sıra bu listeden film silme işleminde. Aslında burda filmi silmek istediğim index önemli, çünkü bu index, silme işleminden sonra boş kalacağı için bu indexten sonra gelen indexlerdeki herbir filmi bir öncekine kaydırmam demektir bu.

Buraya kadar gördüğümüz senaryoda bu iş için Java’da array yapısını kullandık.Yani Film listemizi dinamik hale getirip ekleme,arama ve silme işlemlerini yapabildik.Bu işlemler için object oriented mantığına dayalı olarak array yapısını sarmalayan ve ihtiyacım olan işlemleri içinde barındıran bir FilmArray objesi oluşturdum.Burada Java’nın kendi implemente ettiği ArrayList sınıfını da kullanabilirdim. Ama array, implemente etme mantığının oluşması ve arka planda aslında neler oluyor, o perdeyi aralamak için bu şekilde yazdım.

Bundan sonraki yazılarda acaba arama, ekleme, silme işlemleri daha verimli ve hızlı yapılabilir mi? Tek yol array mi, diğer alternatiflerim neler? Hangi veri yapısını ve algoritmayı kullanmam mantıklı? Bu soruların cevaplarını arayacağız …

--

--