我目前正在学习如何实现小广度优先算法。我想将“您”的值(邻居)添加到搜索队列中。 “ + =”操作不起作用..知道如何解决吗?
import scala.collection.mutable.Map
import scala.collection.mutable.Queue
// creating a hash table (allowing to set a map of key, value)
val graph = Map("you" -> ("bob", "claire", "alice"), "alice" -> ("peggy"), "bob" -> ("peggy", "anuj"), "claire" -> ("jonny", "thom"))
graph("bob") // prints the neighbors of "bob"
var search_queue = new Queue[]()
search_queue += graph("you")
println(search_queue)
答案 0 :(得分:2)
您有几个问题。
首先,您的graph
地图从字符串 键变为元组 值。但是由于您的元组大小不同,编译器最终会推断出java.io.Serializable
-我将使用 List 或其他集合作为值。
第二,您可以使用empty
constructor而不是new
来实例化search_queue
。
第三,如果要将多个值添加到可变集合中,可以使用++=
operator,而不是循环每个值并使用+=
。
第四,您只需要集合是可变的,而不是对其的引用-因此您可以使用val
。
也许这段代码可以为您提供帮助。
import scala.collection.mutable.Queue
val graph = Map(
"you" -> List("bob", "claire", "alice"),
"alice" -> List("peggy"),
"bob" -> List("peggy", "anuj"),
"claire" -> List("jonny", "thom")
)
val searchQueue = Queue.empty[String]
searchQueue ++= graph.getOrElse("you", List.empty[String])
// searchQueue = Queue(bob, claire, alice)