Вы можете использовать groupBy
+ map
. Реализация groupBy
равна O (n) , а реализация map
равна O (n) , поэтому общее время выполнения составляет O (2n) O (n) .
list.groupBy { it.id }.map { (id, elementList) -> Container(id, elementList) }
Поскольку это так коротко и читабельно, я бы не стал проводить дальнейшую оптимизацию, если в этом нет особой необходимости, но если вам понадобятся некоторые Дальнейшая оптимизация позволяет также снизить стоимость пространства, избегая, например, выделения нескольких списков.