Dizi Listesi ve Bağlantılı Liste arasındaki fark

Veriler Nasıl Saklanır??

Dizi listesi ve Bağlantılı liste, veri depolama ve alma söz konusu olduğunda yaygın terimlerdir. Çok sayıda depolama cihazı olmasına rağmen, sonuçta depolama mekanizmasına bağlıdır. Bu iki depolama mekanizması verilerinizi depolama aygıtlarına yerleştirir ve gerektiğinde alır. Verileri belleklerinde nasıl sakladıklarına bir göz atalım. Dizi listesi sıralı bir depolama alanı kullanır ve veri parçaları birbiri ardına depolanır. Bu belki de daha basit bir depolama şeklidir - karışıklığı önler. Evet, dizi öğesinin sonraki bellek konumundan sonraki öğeyi veya verileri alabiliriz; ancak Bağlı listesinde işaretçiler yardımıyla saklanır. Burada depolama için iki bellek konumuna ihtiyacımız var - biri veri için, diğeri işaretçi için. Bir işaretçi, bir sonraki verinin hafıza konumuna hitap eder. Bağlı listenin verileri asla sıralı olarak saklamadığını kolayca anlayabiliriz; aksine, rastgele bir depolama mekanizması kullanır. İşaretçiler, bellekteki veri konumlarının yerini belirleyen temel öğelerdir.

Dinamik Dizi ve Bağlantılı Liste

Her iki depolama mekanizmasının verileri nasıl eklediğini daha önce tartıştık ve Dizi listesinin dahili depolama şeması için 'dinamik dizi' terimi verebiliriz. Veri parçalarını birbiri ardına koyar - bu nedenle ad - Bağlantılı liste sonraki öğeyi izlemek için işaretçilerin yardımıyla dahili bir liste kullanır. Bu nedenle, bize sonraki verileri göstermek için tek veya çift bağlantılı bir liste gibi dahili bir bağlantılı liste kullanır.

Hafıza kullanımı

Dizi listesi yalnızca gerçek verileri depoladığından, yalnızca depoladığımız veriler için alana ihtiyacımız vardır. Tersine, Bağlı listesinde işaretçiler de kullanırız. Bu nedenle, iki bellek konumu gereklidir ve bağlantılı listenin Dizi listesinden daha fazla bellek harcadığını söyleyebiliriz. Bağlantılı listesinin avantajlı bir tarafı, Array listesinin aksine, verilerimizi saklamak için hiçbir zaman sürekli bellek konumları gerektirmemesidir. İşaretçiler bir sonraki veri konumunun konumunu tutabilir ve sürekli olmayan daha küçük bellek yuvaları bile kullanabiliriz. Bellek kullanımı söz konusu olduğunda, işaretçiler Bağlı listesindeki ana rolü oynarlar ve bunların etkinliği de.

İlk Dizi Listesinin ve Bağlantılı Listenin Boyutu

Dizi listesiyle boş bir liste bile 10 boyut gerektirir, ancak Bağlantılı listeyle böyle büyük bir alana ihtiyacımız yoktur. 0 boyutunda boş bir Bağlantılı liste oluşturabiliriz. Daha sonra, boyutu gerektiği gibi artırabiliriz.

Veri Alma

Array listesindeki sıralı olarak depolandığından veri alımı daha kolaydır. Tek yaptığı ilk veri konumunu belirlemek; oradan, geri kalanını almak için sıralı olarak bir sonraki konuma erişilir. İlk veri konumu + 'n' gibi hesaplanır; burada 'n', Array listesindeki verilerin sırasıdır. Bağlı listesi, ilk veri konumunu bulmak için ilk işaretçiyi, oradan da bir sonraki veri konumunu bulmak için her bir veriyle ilişkili işaretçiyi belirtir. Geri alma işlemi esas olarak buradaki göstergelere bağlıdır ve bize bir sonraki veri konumunu etkili bir şekilde gösterirler..

Verilerin Sonu

Dizi listesi verinin sonunu işaretlemek için boş bir değer kullanır, Bağlı listesi ise bu amaçla boş bir işaretçi kullanır. Sistem boş verileri tanıdığında, Dizi listesi bir sonraki veri alımını durdurur. Benzer bir şekilde, boş gösterici sistemin bir sonraki veri alımına geçmesini durdurur.

Ters Geçiş

Bağlantılı liste, azalan azaltıcı () yardımıyla ters yönde hareket etmemizi sağlar. Ancak, Array listesinde böyle bir tesisimiz yok - tersine geçiş burada bir sorun haline geliyor.

Sözdizimi

Her iki depolama mekanizmasının Java Sözdizimine bakalım.

Dizi listesi oluşturma:

Liste arraylistsample = yeni ArrayList ();

Dizi Listesine nesne ekleme:

( “Name1”) Arraylistsample.add;

( “Ad2”) Arraylistsample.add;

Ortaya çıkan Dizi listesi şöyle görünecektir - [ad1, ad2].

Bağlantılı liste oluşturma:

Linkedlistsample listesi = new connectedList ();

Bağlantılı Listeye nesne ekleme:

Linkedlistsample.add ( “NAME3”);

Linkedlistsample.add ( “NAME4”);

Ortaya çıkan Bağlantılı liste şöyle görünecektir - [ad3, ad4].

 Get veya Arama İşlemi için Daha İyi?

Dizi listesi herhangi bir veri aramasını çalıştırmak için O (1) zaman alırken, Bağlı listesi n için u O (n) alırinci veri arama. Bu nedenle, bir Array listesi herhangi bir veri araması için her zaman sabit bir zaman kullanır, ancak Bağlı listesinde, geçen zaman verilerin konumuna bağlıdır. Bu nedenle, Dizi listeleri her zaman Alma veya Arama işlemleri için daha iyi bir seçimdir.

Ekleme veya Ekleme İşlemi için Daha İyi?

Hem Dizi listesi hem de Bağlantılı Liste veri ekleme için O (1) zaman alır. Ancak dizi doluysa, Array listesinin yeniden boyutlandırılması ve öğeleri daha yenisine kopyalanması uzun zaman alır. Böyle bir durumda, Bağlantılı liste daha iyi bir seçimdir.

Hangi kaldırma işlemi için daha iyi?

Kaldırma işlemi hem Dizi listesinde hem de Bağlı listesinde neredeyse aynı zaman alır. Dizi listesinde, bu işlem verileri siler ve daha sonra yeni diziyi oluşturmak için verilerin konumunu kaydırır - O (n) zaman alır. Bağlantılı listesinde, bu işlem belirli verilere geçer ve daha yeni listeyi oluşturmak için işaretçi konumlarını değiştirir. Geçiş ve uzaklaşma zamanı burada da O (n) 'dir.

Hangisi daha hızlı?

Bir Array listesinin, gerçek verileri depolamak için dahili bir dizi kullandığını biliyoruz. Bu nedenle, herhangi bir veri silinirse, yaklaşan tüm verilerin bir bellek kaydırmaya ihtiyacı vardır. Açıkçası, bu önemli miktarda zaman gerektirir ve işleri yavaşlatır. Bağlı listesinde böyle bir bellek kaydırması gerekli değildir, çünkü tek yaptığı işaretçi konumunu değiştirmek. Bu nedenle, Bağlantılı liste her türlü veri deposundaki Dizi listesinden daha hızlıdır. Ancak, bu yalnızca işlem türüne bağlıdır, yani Al veya Ara işlemi için Bağlantılı listesinin bir Dizi listesinden çok daha fazla zaman alır. Genel performansa baktığımızda, Bağlantılı listenin daha hızlı olduğunu söyleyebiliriz.

Dizi Listesi ve Bağlantılı Liste Ne Zaman Kullanılmalı?

Array listesi, sürekli belleğin mevcut olduğu daha küçük veri gereksinimleri için en uygunudur. Ancak çok miktarda veriyle uğraştığımızda, sürekli belleğin kullanılabilirliği, ister küçük ister büyük olsun, veri depolama mekanizmalarını uygular. Ardından hangisini seçeceğinize karar verin - Dizi listesi veya Bağlantılı liste. Yalnızca verilerin depolanması ve alınması gerektiğinde bir dizi listesiyle devam edebilirsiniz. Ancak bir liste, verileri manipüle ederek bunun ötesinde size yardımcı olabilir. Veri işlemenin ne sıklıkta gerekli olduğuna karar verdiğinizde, genellikle ne tür bir veri alımı yaptığınızı kontrol etmek önemlidir. Sadece Al veya Ara olduğunda, Dizi Listesi daha iyi bir seçimdir; Ekleme veya Silme gibi diğer işlemler için Bağlı listesiyle devam edin.

Farklılıklara tablo biçiminde bakalım.

S.No Kavramlar farklılıklar
Dizi Listesi Bağlantılı liste
1 Veri Depolama Modası Sıralı veri depolamayı kullanır Sıralı olmayan veri depolama kullanır
2 Dahili Depolama Düzeni Dahili Dinamik Diziyi korur Bağlantılı bir liste tutar
3 Hafıza kullanımı Yalnızca veriler için bellek alanı gerektirir İşaretçiler için de veriler için bellek alanı gerektirir
4 İlk Listenin Boyutu En az 10 ürün için yer ihtiyacı var Boşluğa ihtiyaç duymaz ve 0 boyutunda boş bir Bağlantılı liste bile oluşturabiliriz.
5 Veri Alma İlk veri konumu + 'n' gibi hesaplar; burada 'n', Array listesindeki verilerin sırasıdır İlk veya sondan gerekli verilere kadar geçiş
6 Verilerin Sonu Null değerler sonu belirtir Boş İşaretçi sonu işaretler
7 Ters Geçiş İzin vermiyor Descendingiterator () yardımı ile izin verir
8 Liste Oluşturma Sözdizimi Liste arraylistsample = yeni ArrayList ();

Linkedlistsample listesi = new connectedList ();

9 Nesne Ekleme ( “Name1”) Arraylistsample.add;

Linkedlistsample.add ( “NAME3”);

10 Al veya Ara O (1) zaman alır ve performansta daha iyidir O (n) zaman alır ve performans verilerin konumuna bağlıdır
11 Ekle veya Ekleme Dizinin dolu olduğu durumlar dışında O (1) zamanı tüketir Her koşulda O (1) zaman tüketir
12 Silme veya Kaldırma O (n) zaman alır O (n) zaman alır
13 Ne Zaman Kullanılır? Çok sayıda Get veya Search işlemi söz konusu olduğunda; bellek kullanılabilirliği başlangıçta bile daha yüksek olmalıdır Çok sayıda Ekleme veya Silme işlemi olduğunda ve bellek kullanılabilirliğinin sürekli olması gerekmiyorsa