List
のコードでは、val originalOrdering
の順序は、List
から要素を削除した後に再作成する必要があります。前の順序によるリストの並べ替え
val random3ElementStringList
は、リストがList
に含まれることができる値を示唆していない1,2,3,4
値でList(1 , 3 , 4)
元のリストval originalOrdering
に再注文しなければならない値List(3, 4, 1)
を取る場合。リストには数値以外の文字を含めることができます。
import scala.collection.immutable._
object sort extends App {
val originalOrdering : List[String] = List("1" , "2" , "3" , "4");
var random3ElementStringList : List[String] = util.Random.shuffle(originalOrdering).take(3)
val stringPositions : Map[String , Int] = originalOrdering.zipWithIndex.toMap
println(random3ElementStringList)
println(stringPositions);
val fl = random3ElementStringList.foldLeft("")((a , b) => (stringPositions.get(b)+","))
println(fl)
}
このコードの出力は次のようになります。
:List(2, 3, 4)
Map(1 -> 0, 2 -> 1, 3 -> 2, 4 -> 3)
Some(3),
しかしfl
はソートがstringPositions
更新で元の順序によって決定されたソート順に文章を含まなければなりません
import scala.collection.immutable._
object sort extends App {
def reOrder(originalList : List[String] , originalListSubset : List[String]) = {
val stringPositions : Map[String , Int] = originalList.zipWithIndex.toMap
val fl : List[(String , Int)] = originalListSubset.map(m => (m , stringPositions.get(m).get))
fl.sortBy(s => s._2).map(m => m._1)
}
val originalList : List[String] = List("a" , "b" , "c" , "f");
var random3ElementStringList : List[String] = util.Random.shuffle(originalList).take(3)
println(random3ElementStringList)
println(reOrder(originalList , random3ElementStringList))
random3ElementStringList = util.Random.shuffle(originalList).take(2)
println(random3ElementStringList)
println(reOrder(originalList , random3ElementStringList))
}
ありがとうございます、私はあなたのコードを拡張し、質問の更新を掲載しました。新しいバージョンでは、ソートの位置が注文によって決定され、更新を実装した後にこれが認識される、変更されたマップキーがソートされます。ありがとう! –
私はそれを得ていませんでした。この更新されたコードで新しい質問がありますか? – laughedelic
いいえ、ちょうど私の最終的なソリューションがあなたの上に構築されていることを指摘しています。 –