IT干货网

Scala,让我的循环更实用

leader 2025年12月25日 编程设计 36 0

我试图减少我像 Java 一样编写 Scala (2.8) 的程度。这是我遇到的问题的简化。您能否对我的“功能更强大”的解决方案提出改进建议?

变换 map

val inputMap = mutable.LinkedHashMap(1->'a',2->'a',3->'b',4->'z',5->'c') 

通过丢弃任何值为 'z' 的条目并在遇到字符时对其进行索引

第一次尝试
var outputMap = new mutable.HashMap[Char,Int]() 
var counter = 0 
for(kvp <- inputMap){ 
  val character = kvp._2 
  if(character !='z' && !outputMap.contains(character)){ 
    outputMap += (character -> counter) 
    counter += 1 
  } 
} 

第二次尝试(没有好多少,但使用不可变映射和“foreach”)
var outputMap = new immutable.HashMap[Char,Int]() 
var counter = 0 
inputMap.foreach{ 
  case(number,character) => { 
    if(character !='z' && !outputMap.contains(character)){ 
      outputMap2 += (character -> counter) 
      counter += 1 
    } 
  } 
} 

请您参考如下方法:

更好的解决方案:

inputMap.toList.filter(_._2 != 'z').map(_._2).distinct.zipWithIndex.toMap 


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!