Scala 映射和元组内容整理及课后习题

本文详细介绍了使用Scala进行集合操作,包括Map的创建、更新及遍历,以及从文件中读取数据并进行处理的方法。展示了如何利用Scala的强大功能处理实际问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目
题目
试题如上图所示,答案:
1.

val price=Map("apple"->3,"book"->10,"pen"->20)
val newprice= for((k,v)<-price) yield (k,v*0.9)
for((k,v)<-newprice) print(k+":"+v+" ")
val mutcounts=scala.collection.mutable.Map[String,Int]()
val filepath="D:\\ScalaWorkSpace\\Scala-exa\\src\\myfile.txt"
scala.io.Source.fromFile(filepath).getLines().foreach(
  line=>{
    for(word <- line.split(" ")){
      val newcounts=mutcounts.getOrElse(word,0)+1
      mutcounts+=(word->newcounts)
    }
  }
)
for((k,v) <- mutcounts) print(k+":"+v+"\n")
var counts=Map[String,Int]()
scala.io.Source.fromFile(filepath).getLines().foreach(
  line=>{
    for(word<-line.split(" ")){
      if(counts.contains(word)){
        val num=counts(word)+1
        var newcounts=counts+(word->num)
        counts=newcounts
      }else{
        counts=counts+(word->1)
      }
    }
  }
)
for((k,v) <- counts) print(k+":"+v+"\n")
def sortMapCount(filepath:String): Unit ={
  val sortCounts=scala.collection.mutable.SortedMap[String,Int]()
  scala.io.Source.fromFile(filepath).getLines().foreach(
    line=>{
      for(word<-line.split(" ")){
        val num=sortCounts.getOrElse(word,0)+1
        sortCounts +=(word->num)
      }
    }
  )
  for((k,v) <- sortCounts) print(k+":"+v+"\n")
}
sortMapCount(filepath)
import scala.io.Source
import scala.collection.mutable.Map
import scala.collection.JavaConversions.mapAsScalaMap
import java.util.TreeMap
val filepath:String="D:\\ScalaWorkSpace\\Scala-exa\\src\\myfile.txt"
def treeMapCount(filepath:String):Unit={
  val map:Map[String,Int]=new TreeMap[String,Int]
  Source.fromFile(filepath).getLines().foreach(
    line=>{
      for(word<-line.split(" ")){
        val num=map.getOrElse(word,0)+1
        map += (word->num)
      }
    }
  )
  for((k,v)<-map) print(k+":"+v+"\n")
}
treeMapCount(filepath)
val data=scala.collection.mutable.LinkedHashMap("Monday"->java.util.Calendar.MONDAY)
data +=("Tuesday"->java.util.Calendar.TUESDAY)
data +=("Wednesday"->java.util.Calendar.WEDNESDAY)
data +=("Thursday"->java.util.Calendar.THURSDAY)
data +=("Friday"->java.util.Calendar.FRIDAY)
data +=("Saturday"->java.util.Calendar.SATURDAY)
data +=("Sunday"->java.util.Calendar.SUNDAY)
for((k,v)<- data){
  print(k+":"+v+"\n")
}
import scala.collection.JavaConversions.propertiesAsScalaMap
val properties:Map[String,String]=System.getProperties()
for((k,v)<- properties){
  print(k+":"+v+"\n")
}
def minmax(values:Array[Int]):(Int,Int)={
  (values.max,values.min)
}
def lteqgt(values:Array[Int],v:Int):(Int,Int,Int)={
  var a,b,c:Int=0
  for(x <- values){
    if(x<v) a+=1
    else if(x==v) b+=1
    else if(x>v) c+=1
  }
  (a,b,c)
}

得到的结果如下所示:
res9: scala.collection.immutable.IndexedSeq[(Char, Char)] = Vector((h,W), (e,o), (l,r), (l,l), (o,d))
可遍历便可拉链,按遍历顺序拉链

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值