向hashmap添加元素时Scala类型不匹配

向hashmap添加元素时Scala类型不匹配,scala,Scala,我在变量a中用Scala表示图形的邻接列表 val a = new HashMap[Int, Vector[Tuple2[Int, Int]]] withDefaultValue Vector.empty for(i <- 1 to N) { val Array(x, y, r) = readLine.split(" ").map(_.toInt) a(x) += new Tup

我在变量
a
中用Scala表示图形的邻接列表

        val a = new HashMap[Int, Vector[Tuple2[Int, Int]]] withDefaultValue Vector.empty
        for(i <- 1 to N) {                
            val Array(x, y, r) = readLine.split(" ").map(_.toInt)
            a(x) += new Tuple2(y, r)
            a(y) += new Tuple2(x, r)
        }

我不明白它为什么要
字符串
。我没有在任何地方指定
字符串。

+=
是用于连接到
字符串的运算符


您可能需要执行以下操作:
a.update(x,a.getOrElse(x,Vector()):+(x,r))
+=
是连接到
字符串的运算符


您可能需要执行以下操作:
a.update(x,a.getOrElse(x,Vector()):+(x,r))
此外,您正在用Scala编写Java代码。它汇编了,但相当于滥用语言:/

下次考虑做类似的事情:

val a = Range(1, N)
   .map { _ => readline.split(" ").map (_.toInt) }
   .flatMap { case Array(x, y, r) => 
       Seq(x -> (y, r), y -> (x, r)) 
   }
   .groupBy(_._1)
   .mapValues { _.map ( _._2) }

另外,您正在用Scala编写Java代码。它汇编了,但相当于滥用语言:/

下次考虑做类似的事情:

val a = Range(1, N)
   .map { _ => readline.split(" ").map (_.toInt) }
   .flatMap { case Array(x, y, r) => 
       Seq(x -> (y, r), y -> (x, r)) 
   }
   .groupBy(_._1)
   .mapValues { _.map ( _._2) }