【问题标题】:Calculations in a map list地图列表中的计算
【发布时间】:2017-04-15 06:27:50
【问题描述】:

我有多个列表存储如下:

Data1 -> 2,100
Data2 -> 5,300

到目前为止,我已经能够将这些插入到一个 txt 文件中并再次读出它们。但是我不确定如何进行计算,以便显示第一个值乘以第二个值。这就是我想要的:

Data1 -> 200 
Data2 -> 1500

我想我可能已经能够修改下面的代码(删除不相关的代码)mapdata2 存储为Map(String, List[Int])

  val mapdata2 = readFile("newDataFile.txt")

  //11 view newly created stocks
  def handleEleven(): Boolean = {
    mnuShowPoints(currentStockFor2)
    true
  }
  def mnuShowPoints(stock:() => Map[String,List[Int]]) = {
    stock() foreach {case (x,y) => println(s"$x: $y")}
  }
  // sort map by value in descending order -
  def currentStockFor2():Map[String,List[Int]] = {
    ListMap(mapdata2.toSeq.sortWith(_._1 < _._1):_*)
  }

我不知道如何解决这个问题,我试过了:

ListMap(mapdata2.map(x=>x*x)

认为这可能将第一个值乘以另一个值,但事实并非如此。我需要更好地理解这是如何工作的。我不明白该怎么做,所以我尝试了一些方法,直到找到有效的方法。我不是在找人为我做这项工作,只是帮助我理解。谢谢

【问题讨论】:

    标签: java scala list


    【解决方案1】:

    如果您尝试映射 Map 中的值,您可以执行以下操作:

    scala> val myMap = Map("Data1" -> (2,100), "Data2" -> (3,500))
    myMap: scala.collection.immutable.Map[String,(Int, Int)] = Map(Data1 -> (2,100), Data2 -> (3,500))
    
    scala> val newMap = myMap.mapValues(x => x._1 * x._2)
    newMap: scala.collection.immutable.Map[String,Int] = Map(Data1 -> 200, Data2 -> 1500)
    

    或者如果你想在你的地图中使用Lists,你可以这样做:

    scala> val myMap = Map("Data1" -> List(2,100), "Data2" -> List(3,500, 10))
    myMap: scala.collection.immutable.Map[String,List[Int]] = Map(Data1 -> List(2, 100), Data2 -> List(3, 500, 10))
    
    scala> val newMap = myMap.mapValues(_.reduce(_*_))
    newMap: scala.collection.immutable.Map[String,Int] = Map(Data1 -> 200, Data2 -> 15000)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-21
      • 2021-06-10
      • 2020-10-30
      • 1970-01-01
      • 1970-01-01
      • 2011-10-07
      • 2020-10-16
      • 2021-07-12
      相关资源
      最近更新 更多