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

时间:2021-01-27 00:23:26

标签: android sorting kotlin arraylist

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

[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")]}

1 个答案:

答案 0 :(得分:1)

您可以为此使用 groupBy

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