如何有效搜索元素

时间:2018-03-28 19:31:55

标签: scala

我有一个

的集合
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))

我如何实现这个以及使用哪种数据结构?

1 个答案:

答案 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)