Avatar ·

ما الفرق بين 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`؟ أم أن هذا هو نفسه؟