Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Scala中二维字符串数组的排序_Arrays_Scala_Sorting_Matrix - Fatal编程技术网

Arrays Scala中二维字符串数组的排序

Arrays Scala中二维字符串数组的排序,arrays,scala,sorting,matrix,Arrays,Scala,Sorting,Matrix,嗨,我想按字母顺序按列对矩阵排序 我试过这个:这只是我试过的泡泡糖 var artists2=Array.ofDimString//Artist Name,Year var compare=0 var aux2="" for(i <- 0 to 99){ for(j <- 0 to 993){ compare = artists(j)(0).compareTo(artists(j+1)(0)) if (compare < 0)

嗨,我想按字母顺序按列对矩阵排序

我试过这个:这只是我试过的泡泡糖 var artists2=Array.ofDimString//Artist Name,Year

var compare=0
var aux2=""
for(i <- 0 to 99){
        for(j <- 0 to 993){
          compare = artists(j)(0).compareTo(artists(j+1)(0))
      if (compare < 0)  { //a is smaller  b>a
        aux2=artists(j)(0)
                artists(j)(0)=artists(j+1)(0)
                artists(j+1)(0)=aux2

                aux2=artists(j)(1)
                artists(j)(1)=artists(j+1)(1)
                artists(j+1)(1)=aux2
      }  
        }
}
println(artists.map(_.mkString(" ")).mkString("\n"))
var比较=0
var aux2=“”

对于(i如果要对数组进行排序,只需在Scala中调用
sortBy
方法即可

scala> val artists = Array(("ArtistA",1987), ("ArtistC", 1545), ("ArtistB", 2014))
artists: Array[(String, Int)] = Array((ArtistA,1987), (ArtistC,1545), (ArtistB,2014))

scala> artists.sortBy(_._1)
Array[(String, Int)] = Array((ArtistA,1987), (ArtistB,2014), (ArtistC,1545))

在这种情况下,您的数据不是在
数组[(String,Int)]
类型中,而是在二维数组中。请注意,与元组不同,二维数组不能支持多种类型(您可以将其类型丢失为“Any”)。因此数组的类型将是
数组[Array[String]]

val d2 = Array(Array("ArtistA","ArtistC","ArtistB"), Array("1987", "1545", "2014"))
d2: Array[Array[String]] = Array(Array(ArtistA, ArtistC, ArtistB), Array(1987, 1545, 2014))

val sorted = d2(0).zip(d2(1)).sortBy(_._1).unzip  
sorted: (Array[String], Array[String]) = (Array(ArtistA, ArtistB, ArtistC),Array(1987, 2014, 1545))

这里的想法是,首先使用
zip
打破2D数组,创建一个元组数组。然后对其进行排序,最后解压。

我发现这个错误
方法的参数不足,原因是:(隐式order:scala.math.Ordering[B])数组[array[String]].未指定的值参数ord。
您能给我一个输入数据的示例吗?与我在这里使用“artists”时所做的类似?“Korn”,“1987”我想按artists的字母顺序对其进行排序,这两个字段是字符串