Dizi Listesi Nedir?

Bilgisayar programcılığındaki bir ArrayList, bir bilgisayar dizisi gibi davranan bir veri yapısıdır ancak aynı zamanda dizinin boyutunu gerektiği gibi dinamik olarak büyütme yeteneğini de uygular. Program yürütme sırasında yeniden boyutlandırılamayan gerçek bir dizi veri türünden farklı olarak, ArrayList yapısı öğelerin eklenmesine veya silinmesine yanıt olarak dizinin boyutunu büyütebilir ve küçültebilir. Veri toplama işlemine hızlı ve rasgele erişime izin veren çok uygun bir performans profiline sahiptir. Bununla birlikte, diğer bazı veri yapılarından daha yavaş olduğu, yani öğelerin dizinin ortasından eklenmesi ve çıkarılması gibi iki durum vardır. Nesneye yönelik programlama dillerinin çoğu, bazen dinamik diziler olarak adlandırılsa da, böyle bir listenin bir tür uygulamasına sahiptir.

ArrayList'in kullanılması, bağlantılı listelerde gerekli olan bir adres bulmak için tüm veri dizisinde dolaşmak yerine, anında bir dizin numarasına sahip veri nesnelerine erişme olanağı sağlayan bir program sağlar. Dizinin boyutunu gerektiği gibi artırabilmek, hem esnekliği hem de hızı düşünen çok dengeli bir yaklaşımdır. Ek olarak, elemanlar böyle bir listeden çıkarıldığında, dizinin büyüklüğü azalır ve hafıza alanı boşaltılır.

Diğer bazı veri yapılarında ArrayList kullanmanın bir yararı, saklanan verileri içermesi için bir sarmalayıcı nesnesinin gerekli olmamasıdır. Bağlantılı bir liste veya karma tablo durumunda, koleksiyonu tutmak ve işlemek için kullanılan tekniği korumak için genellikle ayrı bir nesneye ihtiyaç duyulur. Bir ArrayList ile veri nesneleri hakkında ihtiyaç duyulan tek bilgi, bellekteki nesnenin adresidir. Bu, bu tür bir liste ile çalışırken daha az ek yük hafızası kullanımı olacağı anlamına gelir.

Bir ArrayList kullanmakla ilgili olası bir problem, uygulama ve hafıza yönetim sisteminden gelebilir. Dizilerin çoğu ardışık bellek konumları olarak tahsis edilir. Bu nedenle, belirli bir büyüklükte bir ArrayList kullanmak için, en azından o kadar çok belleğin kesintisiz bir blok dizisinde mevcut olması gerekir. Dinamik dizi birkaç kez yeniden boyutlandırılabilir, böylece bellek parçalanması gerçekleşebilir ve programın çalışmasını durdurarak bir bellek ayırma hatasına neden olabilir.

Bir ArrayList'in performansı, standart bir dizi kullanmaya benzer, ancak erişim zamanları, dizi bir nesneye yerleştirildiği için biraz daha yavaştır. Dinamik bir dizinin, uygulamaya bağlı olarak, dramatik bir şekilde yavaşlayabileceği bir örnek, dizinin boyutunun değiştirilmesi gerektiğindeki durumdur. Bu, mevcut dizinin, performansta geçici bir bozulmaya neden olan istenen yeni boyuta tahsis edilen yeni bir diziye kopyalanmasını içerebilir. Bir öğeyi listenin ortasından eklerken veya kaldırırken de aynı sorun yaşanabilir; bu, aşağıdaki tüm öğelerin yeni bir konuma taşınmasına neden olabilir.