كيفية تحويل List إلى Map في Kotlin: دليل كامل
مرحبًا بالجميع! لقد بدأت للتو في تعلم Kotlin بعد Java، وواجهت مشكلة في تحويل قائمة من الكائنات إلى Map. في Java، كنت أستخدم الحلقات أو Stream API مع Collectors.toMap()، لكن في Kotlin لم أتعرف بعد على الصيغة الصحيحة.
لدي فئة بيانات بسيطة:
```kotlin
data class User(val id: Int, val name: String)
```
وقائمة من المستخدمين:
```kotlin
val users = listOf(
User(1, "Анна"),
User(2, "Борис"),
User(3, "Виктор")
)
```
أحتاج إلى تحويل هذه القائمة إلى Map، حيث يكون المفتاح هو id المستخدم، والقيمة هي كائن User نفسه. أي أريد الحصول على: `{1=User(1, "Анна"), 2=User(2, "Борис"), 3=User(3, "Виктор")}`.
حاولت كتابة شيء مثل `users.map { it.id to it }.toMap()`، لكن هذا يبدو غريبًا ولست متأكدًا مما إذا كان صحيحًا. بالإضافة إلى ذلك، أحتاج إلى حل مشكلة المفاتيح المكررة المحتملة — ماذا لو كان لدى مستخدمين نفس id؟ في Java، كنت سأحدد دالة دمج (merge function).