Array ve ArrayList arasındaki fark

Anonim

Array ve ArrayList nedir?

Hem Array hem de ArrayList, Java programlarında sıklıkla kullanılan dizin tabanlı veri yapılarıdır. Kavramsal olarak, ArrayList dizileri tarafından dahili olarak desteklenir, ancak ikisi arasındaki farkı anlamak, mükemmel bir Java geliştiricisi olmanın anahtarıdır. Başlamak için oldukça basit bir adım, özellikle de kod yazmaya yeni başlayan yeni başlayanlar. İkisi de öğeleri ilkel veya nesne olarak Java'da saklamak için kullanılırken, işlevsellik ve performans bakımından farklılıkları vardır. ArrayList doğasında dinamik iken ikisi arasındaki en büyük fark Array statik olmasıdır. Bu makale, ikisini birden seçebilmeniz için çeşitli yönleriyle karşılaştırır.

Array ve Arraylist arasındaki fark

  1. Boyutlandırılabilir

İki veri yapısı arasındaki başlıca ve gözle görülür farklılıklardan biri Array'ın statik olmasıdır; bu da sabit uzunlukta bir veri türü anlamına gelir; ArrayList doğada dinamiktir, yani değişken uzunlukta bir veri yapısı olduğu anlamına gelir. Teknik terimlerle, Array nesnesi oluşturulduktan sonra Array uzunluğu değiştirilemez veya değiştirilemez. Aynı veri türünün elemanlarının sıralı olarak toplanmasını içerir. Java'daki diziler, C / C ++'da işlev görenden farklı çalışır. Öte yandan, ArrayList kendisini yeniden boyutlandırabilir ve diziler ihtiyaç duyuldukça büyüyebilir. Dinamik bir veri yapısı olduğu için, elemanlar listeye eklenebilir ve listeden çıkarılabilir.

  1. Generics

Javascript sınıflarının dizilerini oluşturamazsınız, diziler ve jenerikler el ele girmezler çünkü diziler kovaryant olan bir temel nedenden dolayı Generic Array'ın oluşturulmasını imkansız hale getirir Jenerikler değişmezken. Array sabit uzunlukta bir veri yapısı iken, aynı sınıfın nesneleri veya belirli veri türündeki ilkelleri içerir. Dolayısıyla, Array nesnesi oluşturulurken belirtilenden farklı veri türünü depolamaya çalışırsanız, "ArrayStoreException" atar. ArrayList, diğer taraftan, tip emniyetini sağlamak için Generics'i desteklemektedir.

  1. İlkeller

ArrayList'te int, double, long ve char gibi ilkel veri türleri kabul edilmez. Daha çok nesneleri tutar ve ilkeller Java'da nesneler olarak düşünülmez. Öte yandan diziler, nesnelerin yanı sıra ilkel nesneleri de saklayabilir, çünkü nesneleri depolamak için Java'daki en verimli veri yapılarından biridir. Aynı veya farklı türde nesneler tutmak için tasarlanmış toplu bir veri türüdür.

  1. Length

Array'ın uzunluğunu elde etmek için, kodun length özniteliğine erişmesi gerekir; çünkü bir Array üzerinde işlem yapmak için gereken uzunluğu bilmelidir.ArrayList, ArrayList'in boyutunu belirlemek için size () yöntemini kullanırken, ArrayList'in uzunluğunu belirlemekten oldukça farklıdır. Size () yöntemi özniteliği, bir ArrayList öğesinin sayısını belirler; bu da ArrayList'in kapasitesini belirtir.

Örnek için:

public class ArrayLengthTest {

public static void main (String [] args) {

ArrayList arrList = new ArrayList ();

String [] öğeler = {"Bir", "İki", "Üç"};

için (String str: items) {

arrList. (Str) ekleyin;

}

int size = items. boyut();

Sistem. dışarı. println (boyut);

}

}

  1. Uygulama

Array, Java'da dinamik olarak oluşturulmuş yerel bir programlama bileşenidir ve elemanları tutmak için atama işleci kullanırken ArrayList elemanları eklemek için add () özniteliğini kullanır. ArrayList, Java'da, öğelere erişmek ve bunları değiştirmek için belirtilen yöntemler kümesini kullanan bir toplama çerçevesinden gelen bir sınıftır. Bir ArrayList'in boyutu dinamik olarak artırılabilir veya azaltılabilir. Bir dizideki öğeler bitişik bellek konumunda saklanır ve boyutu boyunca statik kalır.

  1. Performans

Her iki veri yapısı da ArrayList'in Array'lar tarafından desteklenmesiyle benzer bir performans sergilerken, birincisi çoğunlukla CPU zamanı ve bellek kullanımı bakımından biraz kenarları vardır. Diyelim ki, dizinin boyutunu biliyorsanız, muhtemelen ArrayList ile gideceksiniz. Bununla birlikte, bir Array üzerinde yinelenme, bir ArrayList üzerinde yineleme işleminden biraz daha hızlıdır. Program çok sayıda ilkel gerektiriyorsa, bir dizi hem zaman hem de bellek anlamında ArrayList'ten önemli ölçüde daha iyi performans gösterecektir. Diziler, koleksiyon uygulamalarında kullanılabilen düşük seviyeli bir programlama dilidir. Bununla birlikte, performans, gerçekleştirdiğiniz işleme bağlı olarak değişiklik gösterebilir.

Array Vs. Arraylist

Array ArrayList
Array, dizi nesnesi oluşturulduktan sonra uzunluğu değiştirilemeyen sabit uzunlukta bir veri yapıdır. ArrayList doğada dinamik olup, gerektiğinde büyümek üzere yeniden boyutlandırılabilir.
Bir dizinin boyutu, program boyunca statik kalır. ArrayList boyutu, yük ve kapasiteye bağlı olarak dinamik olarak artabilir.
Öğeleri depolamak için atama işleci kullanır. Öğe eklemek için add () özelliğini kullanır.
İlkel nesnelerin yanı sıra aynı veya farklı veri türünün nesnelerini içerebilir. İlkellere ArrayList'te izin verilmez. Yalnızca nesne türleri içerebilir.
Diziler ve Generics el ele gitmez. Generics'e ArrayList'te izin verilir.
Diziler çok boyutlu olabilir. ArrayList tek boyutludur.
Bu, elemanların bitişik bellek konumlarında depolandığı yerli bir programlama bileşeni. Nesnelerin bitişik yerlerde asla saklanmadığı Java koleksiyonları çerçevesinden bir sınıf.
Uzunluk değişkeni, Dizinin uzunluğunu belirlemek için kullanılır. Size () yöntemi, ArrayList'in boyutunu belirlemek için kullanılır.
Belirtilen öğeleri veya nesneleri depolamak için ArrayList'ten daha az bellek kullanır. Nesneleri saklamak için Array'den daha fazla bellek alır.
Bir dizi üzerinden yineleme, bir ArrayList üzerinde yineleme işleminden daha hızlıdır. Bir ArrayList üzerinde yineleme, performans açısından önemli ölçüde yavaştır.

Özet

Bazıları, bir programdaki dizilerin uygulanmasının, dizilerin düşük düzeyli bir veri yapısı olduğu basit bir nedenden dolayı ArrayListlerle aynı işi yapmaktan daha hızlı sonuç alabileceğini düşünebilir; performans, tekrar yapıyor. ArrayList'in boyutu dinamik olarak arttırılabilir veya azaltılabilir ise de, ArrayList işlevselliği açısından Array üzerinde küçük bir kenara sahiptir. Ancak, farklılıklara rağmen bazı benzerlikler de paylaşıyorlar. Her ikisi de Java'da nesneleri saklamanıza izin veren dizin tabanlı veri yapılarıdır ve ikisi de çoğaltılmış değerlerin yanı sıra boş değerlere de izin verir. Nesnelerin boyutunu önceden biliyorsanız, bir dizi ile gitmelisiniz ve ebattan emin değilseniz ArrayList ile gidin.