ما الفرق بين ArrayList<String>() و mutableListOf<String>() في Kotlin؟
مرحبًا! بدأت تعلم Kotlin بعد Java ولاحظت أنه لإنشاء قائمة قابلة للتعديل يمكن استخدام طريقتين:
```kotlin
val list1: ArrayList = ArrayList()
val list2: MutableList = mutableListOf()
```
كلا الخيارين يبدو أنهما يعملان بنفس الطريقة: يمكنني إضافة وحذف وتعديل العناصر. لكن ما يربكني هو أنه في حالة واحدة تم تحديد النوع بوضوح كـ `ArrayList`، وفي الأخرى كـ `MutableList`.
جربت كتابة هذا الكود:
```kotlin
fun processList(list: MutableList) {
list.add("Kotlin")
}
val arrayList = ArrayList()
val mutableList = mutableListOf()
processList(arrayList) // يعمل
processList(mutableList) // يعمل أيضًا
```
كلا القائمتين يتم تمريرهما إلى دالة تنتظر `MutableList`. إذًا هل هما نفس الشيء؟ أم هناك اختلافات دقيقة في الأداء أو الذاكرة أو السلوك؟
هل `mutableListOf()` تُرجع شيئًا غير `ArrayList`؟ أم أن هذا هو نفسه؟