Arrays Scala中二维字符串数组的排序
嗨,我想按字母顺序按列对矩阵排序 我试过这个:这只是我试过的泡泡糖 var artists2=Array.ofDimString//Artist Name,YearArrays 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 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的字母顺序对其进行排序,这两个字段是字符串