Ben*_*ith 5 collections functional-programming scala
虽然我知道有几种方法可以做到这一点,但我最感兴趣的是找到最惯用和最实用的Scala方法.
给出以下陈腐的例子:
case class User(id: String)
val users = List(User("1"), User("2"), User("3"), User("4"))
Run Code Online (Sandbox Code Playgroud)
什么是创建user.id - > User的不可变查找Map的最佳方法,以便我可以通过user.id执行快速查找.
在Java中,我可能会使用Google-Collection的Maps.uniqueIndex,尽管我不太关心它的独特属性.
您可以将用户保留在List中并使用list.find:
users.find{_.id == "3"} //returns Option[User], either Some(User("3")) or None if no such user
Run Code Online (Sandbox Code Playgroud)
或者如果要使用Map,请将用户列表映射到2元组列表,然后使用toMap方法:
val umap = users.map{u => (u.id, u)}.toMap
Run Code Online (Sandbox Code Playgroud)
这将返回一个不可变的Map [String,User],然后就可以使用了
umap contains "1" //return true
Run Code Online (Sandbox Code Playgroud)
要么
umap.get("1") //returns Some(User("1"))
Run Code Online (Sandbox Code Playgroud)