Подводя итог тому, что все здесь сказали.
В java и kotlin все объекты, хранящиеся в куче, и все ваши переменные хранят только ссылки на объекты в куче:
Когда вы делаете это: parentMap["data$i"] = map
Ваши ключи, например: data1
, data2
, data3
... будут указывать на экземпляр той же карты, которую вы создали здесь:val map = HashMap<String, Any?>()
.
Так что все, что вы делаете с вашей картой:
map["id"] = order.id
map["productName"] = order.productName
map["quantity"] = order.quantity
меняйте только одну карту, которая у вас есть.
Чтобы исправить это, вы можете поместить свою картусоздание внутри цикла. Или я предлагаю вам использовать неизменный стиль как:
orders.mapIndexed { i, order ->
"data$i" to mapOf(
"id" to order.id,
"productName" to order.productName,
"quantity" to order.quantity
)
}.toMap()