Android 如何将数组列表转换为映射,将键匹配到数组值?

Android 如何将数组列表转换为映射,将键匹配到数组值?,android,sorting,kotlin,arraylist,Android,Sorting,Kotlin,Arraylist,我有一个事件数组列表,我想将它们转换成一个可变映射,其中一个事件值(日期)是键,每个键只包含具有该日期的事件。以下是我的原始事件列表示例: [Event(name="person 1", desc="hello", date="2021-01-05"), Event(name="person 2", desc="hi", date="2021-01-05"), Even

我有一个事件数组列表,我想将它们转换成一个可变映射,其中一个事件值(日期)是键,每个键只包含具有该日期的事件。以下是我的原始事件列表示例:

[Event(name="person 1", desc="hello", date="2021-01-05"), 
 Event(name="person 2", desc="hi", date="2021-01-05"), 
 Event(name="person 3", desc="hi", date="2021-01-08")]
通过迭代事件并每次添加键和事件,到目前为止,我得到了以下结果:

{2021-01-05=[Event(name="person 1", desc="hello", date="2021-01-05"),
             Event(name="person 2", desc="hi", date="2021-01-05"), 
             Event(name="person 3", desc="hi", date="2021-01-08")],
 2021-01-08=[Event(name="person 1", desc="hello", date="2021-01-05"), 
             Event(name="person 2", desc="hi", date="2021-01-05"), 
             Event(name="person 3", desc="hi", date="2021-01-08")]}
下面的结果就是我所需要的,但我不确定如何才能得到它。我尝试过过滤映射并再次迭代,但无法得到期望的结果。任何帮助都将不胜感激

{2021-01-05=[Event(name="person 1", desc="hello", date="2021-01-05"), 
             Event(name="person 2", desc="hi", date="2021-01-05")],
 2021-01-08=[Event(name="person 3", desc="hi", date="2021-01-08")]}

您只需使用
groupBy
即可:

val map = events.groupBy(Event::date).toMutableMap()

感谢这项工作;它给了我一个列表的输出,而不是一个ArrayList,但这很好。