Java ile List ile Set Arasındaki Fark
İçerik
Liste ve Arabirim arabirimi Koleksiyon'u genişletir. İkisi de elementlerin veya nesnelerin koleksiyonunu korur. Ancak, onları birbirinden ayıran en büyük fark List'tir, sıralı elemanların bir koleksiyonudur, elemanlara bir indeks değişkeni yardımıyla eklenir veya çıkarılır ya da erişilir. Öte yandan, Set, koleksiyonun içinde yinelenen öğelere izin vermediği bir nesne koleksiyonudur. Aşağıda gösterilen karşılaştırma çizelgesinin yardımıyla Liste ve Set arayüzleri arasında biraz daha farklılıklar çalışalım.
- Karşılaştırma Tablosu
- Tanım
- Anahtar Farklılıklar
- Sonuç
Karşılaştırma Tablosu
Karşılaştırma için temel | Liste | Ayarlamak |
---|---|---|
Temel | Liste, bir listede depolanan öğelerin sırasını korur. | Set özellikle ekleme sırasını korumaz, ancak Linked HashSet ekleme sırasını korur. |
kopya | Listede yinelenen öğeler bulunabilir. | Yinelenen öğeleri eklemeye çalışırsanız, add () yöntemi false değerini döndürür. |
Yöntemler | Koleksiyonda tanımlanan yöntemlere ek olarak, Liste kendi yöntemlerinden bazılarını tanımlar. | Set, herhangi bir ek yöntem tanımlamaz. |
uygulama | Liste ArrayList, LinkedList, CopyOnWriteArrayList, Vector, Stack tarafından uygulanır. | Set, HashSet, LinkedHashSet, EnumSet, TreeSet, CopyOnWriteArraySet tarafından uygulanır. |
Listenin tanımı
Liste arayüzü Koleksiyon arayüzünü genişletir. Liste, düzenlenmiş bir öğeler veya nesneler koleksiyonudur. Küme'den farklı olarak Liste, yinelenen öğeler içerebilir. Koleksiyon Listesi'nde tanımlanan yöntemlere ek olarak, index-tabanlı get () ve set () gibi kendi yöntemlerini de tanımlar. Belirtilen öğeyi yöntem argümanında belirtilen dizine ekleyen veya kaldıran Koleksiyondan devralınan add () ve remove () yöntemleri. Liste, listeye öğeler eklediğimizde boyutu artan bir dizidir.
Liste, bir listedeki dizinler aralığında çalışacak hiçbir yöntem tanımlamaz. Belirtilen aralığın orijinal listesinden bir alt liste döndüren bir sublist () yöntemini tanımlar. Alt listede yaptığınız değişiklikler de orijinal listede görünür. Liste arayüzü ArrayList, LinkedList, CopyOnWriteArrayList, Vector, Stack tarafından uygulanır.
Setin tanımı
Set arayüzü Koleksiyon arayüzünü genişletir. Set interface, içinde herhangi bir yinelenen nesne olmayan bir koleksiyon veya nesne grubudur. Bu, iki referansın bir nesneyi referanslayamayacağı veya bir referansın iki nesneye atıfta bulunamayacağı veya Null'a atıfta bulunan iki referans olamayacağı anlamına gelir. Elemanın sırası veya sırası önemli değildir Küme, ancak sıralı takımı yasakladığı anlamına gelmez.
Set arabirimi, Koleksiyonda tanımlanan yönteme ek olarak herhangi bir yöntem tanımlamaz. Bunun yerine, koleksiyondaki yinelenen herhangi bir nesneyi eklemek için toplama add () ve addall () yöntemlerini kısıtlar. Koleksiyondaki add () yöntemini kullanarak bir koleksiyonda yinelenen herhangi bir nesne eklemeye çalışırsanız, false değerini döndürür. Aksi takdirde, doğru döner. Set arayüzü HashSet, LinkedHashSet, EnumSet, TreeSet, CopyOnWriteArraySet tarafından gerçekleştirilir.
- Bir koleksiyondaki öğelerin / nesnelerin sırası List'te tutulurken, Set öğelerin sırasını korumaz, ancak LinkedHashSet'in ekleme sırasını korumasının bir istisnası vardır.
- Liste, diziniyle herhangi bir öğeyi tanımladığı için yinelenen öğelere sahip olabilir, ancak Set, koleksiyondaki herhangi bir nesneyi tanımlamak için herhangi bir dizin türüne sahip olmadığı için yinelenen öğelere izin vermez.
- Liste, Koleksiyon'da tanımlanan yöntemlere ek olarak bazı yöntemleri kendi başına tanımlar. Öte yandan, Set kendi yöntemlerini tanımlamaz, ancak yinelenen öğeler eklemek için Toplama yöntemlerini kısıtlar.
- Liste ArrayList, LinkedList, CopyOnWriteArrayList, Vector, Stack arabirimleri tarafından uygulanır. Öte yandan, Set HashSet, LinkedHashSet, EnumSet, TreeSet, CopyOnWriteArraySet arayüzleri tarafından uygulanır.
Sonuç:
Liste ve Ayarlama arayüzünün kullanımı gereksinime bağlıdır. Nesnelerin / elemanların sırası önemliyse, List arabirimini kullanmanız gerekir. Koleksiyonunuzda yinelenen öğeler istemiyorsanız, Set arabirimini kullanmanız gerekir.