Scala学习笔记-10-容器的操作

  • 遍历
    • List遍历
val list1 = (1 to 100).toList

list1.foreach(i => println(i))

list1 foreach(i => println(i))

list1 foreach println
    •  Map遍历
scala> val mapDogs = Map("huahua"->"雪纳瑞","erdan"->"秋田犬","happy"->"泰迪")
scala> mapDogs foreach {kv => println(kv._1 +" : "+kv._2)}
huahua : 雪纳瑞
erdan : 秋田犬
happy : 泰迪

//mapDogs foreach {x=>x match{case(k,v) => println(k+" : "+v)}} // 下面是简写形式
scala> mapDogs foreach{case(k,v) => println(k + " : " + v)}
huahua : 雪纳瑞
erdan : 秋田犬
happy : 泰迪

  •  map()方法【一对一映射】

将某个函数应用到集合中的每个元素,映射的到一个新的元素。map方法会返回一个与原容器类型大小都相同的新容器,但是元素类型可能不同。

scala> val dogList = List("happy","huahua","erdan","hongshao")
//第一种写法:占位符写法
scala> dogList.map(_.toUpperCase) //中置写法也可以
res41: List[String] = List(HAPPY, HUAHUA, ERDAN, HONGSHAO)
//第二种写法:直接传递 匿名函数
scala> dogList.map(x=>x.toUpperCase)//中置写法也可以
res42: List[String] = List(HAPPY, HUAHUA, ERDAN, HONGSHAO)
//第三种写法:先定义匿名函数再传递
scala> val upper:String=>String = {str => str.toUpperCase}
upper: String => String = <function1>

scala> dogList.map(upper)//中置写法也可以
res43: List[String] = List(HAPPY, HUAHUA, ERDAN, HONGSHAO)

//第四种写法:非匿名函数
scala> def upper(str:String):String = {str.toUpperCase}
upper: (str: String)String

scala> dogList.map(upper)//中置写法也可以
res44: List[String] = List(HAPPY, HUAHUA, ERDAN, HONGSHAO)
  •  flatMap() 一对多映射

将某个函数应用到容器中的元素时,对每个元素都会返回一个容器(不是一个元素),然后flatMa把这些容器“拍扁”成为一个容器返回。

返回的类型与原容器类型箱通,但大写可能不同,类型也可能不同。

scala> dogList flatMap(s => s.toList)
res46: List[Char] = List(h, a, p, p, y, h, u, a, h, u, a, e, r, d, a, n, h, o, n, g, s, h, a, o)
  •  filter
    • 遍历一个容器,从中获取满足指定条件的元素,返回一个新的容器
    • filter方法接受一个返回布尔值的函数f作为参数,并将f作用于每个元素上,将f返回真值的元素组成一个新的容器返回
scala> dogList filter(x=>x.contains("h")) //dogList filter(_.contains("h"))
res48: List[String] = List(happy, huahua, hongshao)

scala> (1 to 100).toList.filter(x => x%5 == 0) // (1 to 100).toList.filter(_%5 == 0)
res51: List[Int] = List(5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100)
  •  filterNot 返回不符合条件的元素
scala> dogList filterNot(x=>x.contains("py"))
res54: List[String] = List(huahua, erdan, hongshao)
  •  exists 集合中是否包含指定条件的元素
scala> dogList exists(x=>x.contains("py"))
res55: Boolean = true
  •  find 返回值用Option类包装(有值:Some,无值:None)
scala> dogList find(x=>x.contains("py"))
res56: Option[String] = Some(happy)

scala> dogList.find(x=>x.contains("py")).get //Some类调用get方法获取被封装的元素
res59: String = happy

-----

猜你喜欢

转载自www.cnblogs.com/wooluwalker/p/12307940.html