Kotlin有序集合中groupBy是否保持分组内元素的稳定顺序?
Kotlin有序集合调用groupBy后分组内元素的顺序稳定性
在Kotlin的有序集合(比如List)上调用groupBy方法时,分组内的元素会严格保持原集合中的出现顺序,不会出现顺序混乱的情况。
拿你给出的代码举例:原列表中值为2的元素在原集合里的出现顺序是索引1、2、6的元素,groupBy会按这个遍历顺序把元素依次添加到键为2的分组列表中,后续调用mapValues提取索引后,得到的结果必然是[1, 2, 6],这个顺序是完全确定的,不存在未定义的情况。
原因很直接:Kotlin的groupBy底层是按原集合的迭代顺序逐个处理元素,每遇到一个元素就将其追加到对应键的分组集合末尾,而有序集合的迭代顺序就是元素的存储顺序,所以分组内的元素顺序和原集合中对应元素的出现顺序完全一致。
内容的提问来源于stack exchange,提问作者tpdi
相关产品推荐
相关产品推荐

