Junior
Java'da List ve Set arayüzleri arasındaki fark nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Java'da List ve Set arayüzleri arasındaki temel farklar şunlardır:
-
Elemanların sırası:
List, elemanların eklenme sırasını korur. Elemanlar 0'dan başlayan indekslere sahiptir.Set, elemanların sırasını garanti etmez. Bazı uygulamalar belirli bir sıralama içerebilir (örneğin,LinkedHashSet,TreeSet), ancakSetarayüzü bunu zorunlu kılmaz.
-
Çift elemanlar (Dublikatlar):
List, yinelenen elemanlara izin verir.Set, yinelenen elemanlara izin vermez. Bir tekrar eklenmeye çalışıldığında, ekleme işlemi ya göz ardı edilir ya dafalsedöner (uygulamaya ve metoda bağlı olarak).
-
Performans:
List'in ortasında ekleme ve silme işlemleri, özellikleArrayListiçin,Set'e göre daha yavaş olabilir.Set'lerde (HashSetgibi) bir elemanın var olup olmadığını kontrol etme (contains) genellikle daha hızlıdır (ortalama O(1)) karşılaştırıldığındaList(ortalama O(n)).- İndeks tabanlı işlemler (
get,set) sadeceList'de mevcuttur.
-
Uygulamalar:
- Tipik
Listuygulamaları:ArrayList,LinkedList,Vector. - Tipik
Setuygulamaları:HashSet,LinkedHashSet,TreeSet.
- Tipik
İşte farkları gösteren örnekler:
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class CollectionDifferences {
public static void main(String[] args) {
// List yinelenenlere izin verir ve sırasını korur
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Apple"); // Yinelenen ekleniyor
System.out.println("List: " + list); // [Apple, Banana, Apple] gösterir
System.out.println("İndeks 1'deki eleman: " + list.get(1)); // İndeks ile erişim
// Set yinelenenlere izin vermez ve sırası garanti edilmez (HashSet için)
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple"); // Yinelenen eklenmeye çalışılıyor - göz ardı edilir
System.out.println("Set: " + set); // [Apple, Banana] veya [Banana, Apple] gibi gösterir
// set.get(1); // Derleme hatası - indeks ile erişim yok
}
}
Karşılaştırma tablosu:
| Özellik | List | Set |
|---|---|---|
| Sıralama | Garantili (ekleme sırası) | Garantili değil (HashSet, TreeSet sıralı sıralama sağlar) |
| Yinelenenler | İzin verilir | İzin verilmez |
| İndeks ile erişim | Mümkün (get(int index)) |
Mümkün değil |
| contains() performansı | Ortalama O(n) (ArrayList için) | Ortalama O(1) (HashSet için) |
| Tipik uygulamalar | ArrayList, LinkedList, Vector | HashSet, LinkedHashSet, TreeSet |