Sobes.tech
Middle

Java ve Kotlin dillerinde veri yapıları nasıl uygulanmıştır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Java'da veri yapıları esas olarak Collections çerçevesi tarafından temsil edilir:

  • Arayüzler: List, Set, Map, Queue, Deque. Koleksiyonların davranışlarını tanımlarlar.
  • Uygulamalar: Bu arayüzleri uygulayan somut sınıflar. Örneğin, ArrayList, LinkedList, HashSet, TreeSet, HashMap, LinkedHashMap, TreeMap, PriorityQueue.

Örnekler:

// Liste oluşturma.
List<String> list = new ArrayList<>();

// Kümeye oluşturma.
Set<Integer> set = new HashSet<>();

// Harita oluşturma.
Map<String, Integer> map = new HashMap<>();

Kotlin'de veri yapıları da Collections çerçevesine dayanır, ancak bazı özelliklerle:

  • Salt okunur ve değiştirilebilir koleksiyonlar: Değiştirilemez (örneğin, List<T>, Set<T>, Map<K, V>) ve değiştirilebilir (örneğin, MutableList<T>, MutableSet<T>, MutableMap<K, V>) koleksiyonlar arasında ayrım. Bu, tip güvenliğini artırır.
  • Üst düzey fonksiyonlar: Koleksiyonları kolayca oluşturmak için fonksiyonlar, örneğin listOf(), mutableListOf(), setOf(), mutableSetOf(), mapOf(), mutableMapOf().
  • Extension fonksiyonlar: Filtreleme, dönüştürme, toplama gibi koleksiyonlarla çalışma için birçok genişletme fonksiyonu.

Örnekler:

// Salt okunur liste oluşturma.
val list: List<String> = listOf("a", "b", "c")

// Değiştirilebilir küme oluşturma.
val set: MutableSet<Int> = mutableSetOf(1, 2, 3)

// Salt okunur harita oluşturma.
val map: Map<String, Int> = mapOf("one" to 1, "two" to 2)

Kotlin'deki temel veri yapısı uygulamaları genellikle Java'nın karşılık gelen uygulamaları üzerine sarılmıştır, daha kullanışlı bir API sağlar ve değiştirilebilir/ değiştirilemez türler arasında ayrım yapar.

Karşılaştırma:

Özellik Java Kotlin
Değişebilirlik Tek arayüz, varsayılan olarak değiştirilebilir Ayrı arayüzler sadece okunabilir ve değiştirilebilir
Koleksiyonların oluşturulması Sınıf yapıcıları aracılığıyla Üst düzey fonksiyonlar aracılığıyla
Koleksiyonlarla çalışma Sınıf metodları Çok sayıda extension fonksiyonları
Null güvenliği Açıkça NRT anotasyonları/doğrulamalar gerektirir Tür seviyesinde entegre edilmiştir