Если вы уверены, что все идентификаторы уникальны, канонический путь -
users.map(u => (u.id, u)).toMap
, как сказал @Dan Simon.Однако, если вы не уверены, что все идентификаторы уникальны, то канонический способ:
users.groupBy(_.id)
Это сгенерирует сопоставление идентификаторов пользователей с списком пользователей, которые используют этот идентификатор.
Таким образом, существует альтернативный не полностью канонический способ создания карты из идентификатора для отдельных пользователей:
users.groupBy(_.id).mapValues(_.head)
Для опытных пользователей, которые хотят избежать промежуточного этапа созданиякарта списков или список, который затем превращается в карту, есть удобный метод scala.collecion.breakOut
, который создает желаемый тип, если есть простой способ сделать это.Тем не менее, он должен знать тип, так что это поможет:
users.map(u => (u.id,u))(collection.breakOut): Map[String,User]
(Вы также можете назначить переменную или переменную указанного типа.)