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 |