首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Scala中为(key - image name // value - image-file)创建映射

如何在Scala中为(key - image name // value - image-file)创建映射
EN

Stack Overflow用户
提问于 2020-10-19 01:16:56
回答 1查看 50关注 0票数 0
代码语言:javascript
复制
  def getListOfImageNames(dir: String): List[String] = {
    val names = new File(dir)
    names.listFiles.filter(_.isFile)
      .map(_.getName).toList
  }


  def getListOfImages(dir: String): List[String] = {
    val files = new File(dir)
    files.listFiles.filter(_.isFile)
      .filter(_.getName.endsWith(".png"))
      .filter(_.getName.endsWith(".jpg"))
      .map(_.getPath).toList
  }

我有一个目录,其中我有不同的照片,小尺寸,大尺寸,我已经设法编写了方法:其中一个只拉出照片的名称,另一个只拉出照片的名称。例如,我现在如何将它们组合到地图中,然后使用以下方法计算它们的分辨率,如果照片大于500x500,则在名称中添加前缀并将其保存在X文件夹中。你有什么想法吗?我没有使用Scala的经验,但我非常喜欢这种语言。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-19 01:31:33

正如我所得到的,你需要得到图像名称到图像路径的映射。你可以这样实现它:

代码语言:javascript
复制
def getImagesMap(dirPath: String): Map[String, String] = {
  val directory = new File(dirPath)
  directory.listFiles.collect{
    case file if file.isFile && 
         (file.getName.endsWith(".png") ||
         file.getName.endsWith(".jpg")) => 
      file.getName -> file.getPath
  }.toMap
}

这里我使用collect函数。它就像是mapfilter函数的组合。在collect中有一个模式匹配表达式。如果file匹配模式匹配,它将计算配对创建: file name to file path。否则,文件将被过滤掉。在我使用toMapArray[(String, String)]转换为Map[String, String]之后。您可以阅读有关collect here的更多信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64416144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档