Scala 映射函数可以应用于元组吗?

Scala 映射函数可以应用于元组吗?,scala,apache-spark,Scala,Apache Spark,我有一个类型为的元组: val data1 : (String , scala.collection.mutable.ArrayBuffer[(String , Int)]) = ( ("" , scala.collection.mutable.ArrayBuffer( ("a" , 1) , ("b" , 1) , ("a" , 1) ) )) // , ("" , scala.collection.mutable.ArrayBuffer("" , 1)) ) 当我尝试使用:data1.m

我有一个类型为的元组:

val data1 : (String , scala.collection.mutable.ArrayBuffer[(String , Int)]) = ( ("" , scala.collection.mutable.ArrayBuffer( ("a" , 1) , ("b" , 1) , ("a" , 1) ) ))  // , ("" , scala.collection.mutable.ArrayBuffer("" , 1)) )
当我尝试使用:
data1.map(m=>println(m))映射时,
我收到错误:

Multiple markers at this line - value map is not a member of (String, scala.collection.mutable.ArrayBuffer[(String, 
 Int)]) - value map is not a member of (String, scala.collection.mutable.ArrayBuffer[(String, Int)])
是否可以使用元组访问器语法使用map函数:。\u 2

这种类型的语法
data1.map(m.\u 2=>println(m.\u 2))
不编译


使用这种语法,我试图应用一个map函数来对与ArrayBuffer关联的所有字母求和。所以上面的例子应该映射到->((a,2),(b,1))

不清楚您想要什么。你期望什么样的产出

是否要打印第二项
data1

println(data1._2)
data1._2.foreach(m => println(m))
或者打印
data1
中的每个buff项

println(data1._2)
data1._2.foreach(m => println(m))
您想让data1成为元组的集合并映射到上面吗

import scala.collection.mutable.ArrayBuffer
val data1 = Vector(("" , ArrayBuffer(("", 1))), ("", ArrayBuffer("", 1)))
data1.foreach { case (a,b) => println(b) }
请注意,如果只是打印内容,则需要的是
foreach
,而不是
map



根据您的编辑:

import scala.collection.mutable.ArrayBuffer
val data1 = (("", ArrayBuffer(("a", 1), ("b", 1), ("a", 1))))
val grouped = data1._2.groupBy(_._1).map { case (k, vs) => (k, vs.map(_._2).sum) }
// Map(b -> 1, a -> 2)
试一试


不能对元组使用映射。元组没有这样的方法

映射函数也应该转换值并返回它,但您只想打印它,而不是更改它

要在您的情况下打印ArrayBuffer,请尝试以下操作:

data1._2.foreach(x=>println(x))
或者只是

data1._2.foreach(println)