Aşağıdaki kodları kullanarak dizinleri katlayıp dosyaları mutable Map
mutable ListBuffer
'a ekleyebilirsiniz. Anahtar, dizin adıdır ve değerler, bu dizinin altındaki dosyaların listesidir.Scala 2.10: Değişkeni dönüştürmek ListBuffer'ın eşzamanlı veri yapısına eşlemesi
def WalkDir(path:String): scala.collection.mutable.HashMap[String,scala.collection.mutable.ListBuffer[String]] = {
def collectFiles(p:Path, allFiles: scala.collection.mutable.HashMap[String,scala.collection.mutable.ListBuffer[String]]): = {
val fileIterator = ... //List all the files
while (fileIterator.hasNext()) {
val f = fileIterator.next()
if (f is not directory) { // pseduo code
val dir = f.getDir() // pseudo code
if (! allFiles.contains(f.getDir().toString())
{
val files = new scala.collection.mutable.ListBuffer[String]
files += (f.path().toString()) // psudeo-code file path
allFiles.put(dir.toString(), files)
}
else {
val t_list = allFiles.get(dir.toString()
allFiles.put(dir.toString(), t_list += f.path().toString())
}
}
if (f is directory) collectFiles(f.getPath(), allFiles)
}
collectFiles(path, new scala.collection.mutable.HashMap[String, scala.collection.mutable.ListBuffer[String]])
}
nasıl Map[String, List[String]]
döndürülen değeri dönüştürmek için? Aynı sonucu elde etmek için daha 'işlevsel' bir yol var mı?
@Neel Ya cevabı kabul edebilir misiniz, yoksa neden işe yaramadığını açıklayabilir misiniz? Teşekkürler ! – eliasah