我有一个
的集合case class User(id: Int, parentId: Int)
val users = Seq(User(3, 23), User(4, 17), User(22, 23),User(29, 90))
我需要通过“parentId”进行高效(小于O(n))搜索:
val testUser = User(23, 999)
val found = users.filter(u => u.parentId == testUser.id)
res: List(User(3,23), User(22,23))
我如何实现这个以及使用哪种数据结构?
答案 0 :(得分:3)
使用groupBy将您的Seq转换为Map,这将为您提供O(1)查找:
case class User(id: Int, parentId: Int)
val users = Seq(User(3, 23), User(4, 17), User(22, 23),User(29, 90))
val usersMap = users.groupBy(_.parentId)
val testUser = User(23, 999)
val found = usersMap.get(testUser.id)