Anahtar Farkı – Liste vs Küme
Çoğu programlama dili, aynı türde bir dizi veriyi depolamak için diziler kullanır. Dizilerin en büyük dezavantajlarından biri, dizi boyutu bildirildiğinde değiştirilememesidir. Programcı dizi boyutunu aşan bir değer depolamak istiyorsa, yeni bir dizi oluşturmalı ve mevcut öğeleri yeni diziye kopyalamalıdır. Bu durumlarda koleksiyonlar kullanılabilir. Koleksiyonların desteği ile eleman eklemek, eleman silmek ve daha birçok işlem yapmak mümkündür. Java gibi programlama dillerinde farklı türde koleksiyonlar mevcuttur. Liste ve Küme, koleksiyon hiyerarşisinin arayüzleridir. Diğer arabirimler için temel arabirim Koleksiyon'dur. Liste ve Küme arasındaki temel fark, Liste'nin aynı öğeyi birden çok kez depolamayı desteklerken, Küme aynı öğeyi birden çok kez depolamayı desteklemez. Bu nedenle, bir Küme çoğ altmaya izin vermez.
Liste nedir?
Liste, Koleksiyon arayüzünü genişleten bir arayüzdür. Collection arayüzünde bir çok metod bulunmaktadır. Add yöntemi, bir öğe eklemeye yardımcı olur. 'Kaldırma yöntemi' bir öğeyi kaldırmaktır. Birden çok öğe eklemek için 'addAll yöntemi', öğeleri koleksiyondan çıkarmak için 'removeAll yöntemi' vardır. İçerir yöntemi, Listede belirli bir nesnenin bulunup bulunmadığını bulmaya yardımcı olur. 'Tümünü içerir', koleksiyonda bir dizi nesnenin bulunup bulunmadığını bulmaktır. Yineleyici yöntemi, listenin öğeleri arasında dolaşmak için kullanılır. List, Collection'ı genişlettiğinden, Collection'ın tüm yöntemleri List'e aittir. Listede bu metotların dışında get ve set gibi metotlar bulunmaktadır. Programcı, get yöntemini kullanarak belirli bir dizinde bir değer alabilir. Programcı, set yöntemini kullanarak belirli bir dizinde bir değer ayarlayabilir. 'indexOf', bir öğenin dizinini bulmak için kullanılır.
Listede, pozisyona göre işlemler yapılabilir. Programcı, dizine eklenecek veri öğesini sağlayabilir. Böylece belirli dizine eklenecektir. Programcı bir indeks vermezse, eleman Listenin sonuna eklenecektir. Ayrıca eklenen sırayı da korur. Öğe 1 eklenir ve ardından öğe2 eklenirse, öğe1 öğe2'den önce gelir.
Şekil 01: Listele ve Ayarla
ArrayList, LinkedList, Vector, List'i uygulayan bazı sınıflardır. ArrayList'te bir öğeye erişim hızlıdır ancak ekleme ve silme işlemleri daha düşüktür. ArrayList iş parçacığı için güvenli değil. Aynı ArrayList'e birden çok iş parçacığından erişmek aynı sonucu vermeyebilir. LinkedList'te öğeler hem geriye hem de ileriye bağlanır. LinkedList kullanarak eleman eklemek ve silmek, ArrayList'ten daha hızlıdır. LinkedList, List ve Queue Her İkisini de uygular. Vektör, ArrayList'e benzer, ancak tüm yöntemler senkronize edildiğinden basamak güvenlidir.
Ayar Nedir?
Set, Koleksiyon arayüzünü genişleten bir arayüzdür. Set arabirimi Collection'ı genişlettiğinden, Collection'ın tüm yöntemleri de Set'e aittir. Bir Küme, çoğ altma değerlerini desteklemez. Bu nedenle, programcı aynı öğeyi iki kez depolayamaz. Benzersiz bir öğeler kümesini korur. SortedSet arabirimi, Set arabirimini genişletir. SortedSet, öğeleri sıralı düzende tutar. NavigableSet arabirimi, SortedSet'i genişletir. NavigableSet, alt, zemin, tavan vb. gibi gezinme yöntemleri sağlar.
HashSet, LinkedHashSet ve TreeSet, Set arabirimini uygulayan bazı sınıflardır. HashSet, Set arayüzünü uygular. Girilen sırayı korumaz. Değerler a, x, b olarak eklenirse, x, a, b olarak depolanabilir. LinkedSet, eklenen sırayı korur. Öğeler a, x, b sırasına göre eklenirse, saklama sırası a, x, b olacaktır. TreeSet, Set ve NavigableSet'i uygular. Ekleme sırasını korumaz, ancak öğeleri sıralı düzende saklar. Girilen sıra a, c, b ise, elemanlar a, b, c olarak saklanacaktır. Tüm HashSet, LinkedHashSet ve TreeSet'te yinelenen öğeler bulunmayacaktır.
Liste ve Küme Arasındaki Benzerlikler Nelerdir?
- Hem Liste hem de Set arayüzleri Koleksiyon arayüzünü genişletir.
- Element ekleme, kaldırma gibi hem Listeleme hem de Küme desteği işlemleri.
Liste ile Küme Arasındaki Fark Nedir?
Listeye Karşı Set |
|
Liste Arayüzü, dizine göre ekleme, silme gibi işlemleri gerçekleştirme yöntemlerini içeren Koleksiyonun alt arayüzüdür. | Set Interface, benzersiz öğeleri korurken öğe ekleme, silme gibi işlemleri gerçekleştirme yöntemlerini içeren Koleksiyonun bir alt arabirimidir. |
Sınıflar | |
ArrayList, Vector ve LinkedList, List arabirimini uygulayan sınıflardır. | HashSet, LinkedHashSet ve TreeSet, Set arabirimini uygulayan sınıflardır. |
Öğe Çoğ altması | |
List, öğelerin çoğ altılmasını destekler. | Set, öğelerin çoğ altılmasını desteklemez. Öğeler benzersizdir. |
Özet – Liste vs Küme
Koleksiyonlar, öğeleri dinamik olarak depolamak için kullanılır. Java gibi programlama dilleri Collection arabirimi sağlar. List ve Set, Collection arayüzüne ait iki arayüzdür. Her iki arabirim de Koleksiyonu genişletir. Bu makale Liste ve Küme arasındaki farkı tartıştı. Liste ve Küme arasındaki temel fark, Liste'nin aynı öğeyi birden çok kez depolamayı desteklerken, Küme aynı öğeyi birden çok kez depolamayı desteklemez. Set her zaman benzersiz öğeleri korur.