Kotlin 如何按Arraylist多维分组

Kotlin 如何按Arraylist多维分组,kotlin,arraylist,group-by,Kotlin,Arraylist,Group By,位于子模型中时,如何按“组”分组 我试过这样做,但结果是错误的 mtop.groupBy { it.sub[0].group } 这是我的密码 // my model data class mTop(val kategori : String, val sub : ArrayList<mSub>) data class mSub(val id_menu : String, val nama_menu : String, val gambar : String, val gro

位于子模型中时,如何按“组”分组

我试过这样做,但结果是错误的

mtop.groupBy { it.sub[0].group }

这是我的密码

// my model

data class mTop(val kategori : String, val sub : ArrayList<mSub>)

data class mSub(val id_menu : String, val nama_menu : String, val gambar : String, val group : String)


// my activity

val mtop: ArrayList<mTop> = ArrayList()
val msub: ArrayList<mSub> = ArrayList()

mtop.add(mTop(header, msub))

//我的模型
数据类mTop(val kategori:String,val sub:ArrayList)
数据类mSub(val id_菜单:字符串,val nama_菜单:字符串,val gambar:字符串,val组:字符串)
//我的活动
val mtop:ArrayList=ArrayList()
val msub:ArrayList=ArrayList()
添加mtop(mtop(标题,msub))
对不起,我经常在这个论坛上问,但从来没有帮助过别人,因为我是一个初学者,我的英语很差。多谢各位

mtop.groupBy { it.sub[0].group }
您得到的错误是因为
sub
为空,并且您正在尝试获取第一个元素

您可能要做的是在尝试groupBy之前进行筛选:

mtop.filter{it.sub.isNotEmpty()}.groupBy{it.sub[0].group}
您得到的错误是因为
sub
为空,并且您正在尝试获取第一个元素

您可能要做的是在尝试groupBy之前进行筛选:

mtop.filter{it.sub.isNotEmpty()}.groupBy{it.sub[0].group}

或者,如果您想包含带有空子项的mtop:
mtop.groupBy{it.sub.firstOrNull()?.group}
,或者,如果您想包含带有空子项的mtop:
mtop.groupBy{it.sub.firstOrNull()?.group}