- 遍历
- 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
-----