Scala добавить все значения карты ключа в очередь - PullRequest
0 голосов
/ 20 ноября 2018

В настоящее время я учусь реализовывать алгоритм с малой шириной.Я хочу добавить значения (соседей) "вас" в очередь поиска.Операция "+ =" не работает .. есть идеи, как решить эту проблему?

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)

1 Ответ

0 голосов
/ 20 ноября 2018

У вас есть пара проблем.

Во-первых, ваша graph Карта переходит от String key к кортеж из значений .но так как ваши кортежи имеют разные размеры, компилятор заканчивает выводом java.io.Serializable - я бы использовал List или другую коллекцию для значений.

Во-вторых, вы можете использовать empty конструктор вместо new для создания экземпляра search_queue.

В-третьих, если вы хотите добавить несколько значений в изменяемую коллекцию, вы можете использовать оператор ++= вместо зацикливания каждого значения и использования +=.

* 1031.* В-четвертых, вам нужно, чтобы коллекция была изменчивой, а не ссылка на нее - поэтому вы можете использовать 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...