将函数映射到集合
任何一种函数式语言中,都有map函数与faltMap这两个函数
map函数的用法,顾名思义,将一个函数传入map中,然后利用传入的这个函数,将集合中的每个元素处理,并将处理后的结果返回。
而flatMap与map唯一不一样的地方就是传入的函数在处理完后返回值必须是List,其实这也不难理解,既然是flatMap,那除了map以外必然还有flat的操作,所以需要返回值是List才能执行flat这一步。
scala> val nums=List(1,2,3,4)
nums: List[Int] = List(1, 2, 3, 4)
scala> nums.map(x=>2+x)
res24: List[Int] = List(3, 4, 5, 6)
scala> nums.map(_+1)
res25: List[Int] = List(2, 3, 4, 5)
scala>
1
2
3
4
5
6
7
8
9
10
scala> val data = List("Hadoop","Java","Spark")
data: List[String] = List(Hadoop, Java, Spark)
scala> println(data.flatMap(_.toList))
List(H, a, d, o, o, p, J, a, v, a, S, p, a, r, k)
scala>
Scala映射(Map)是一组键/值对的对象。 任何值都可以根据键来进行检索。键在映射中是唯一的,但值不一定是唯一的。映射也称为哈希表。映射有两种,不可变的和可变的。可变对象和不可变对象之间的区别在于,当对象不可变时,对象本身无法更改。
默认情况下,Scala使用不可变映射(Map)。如果要使用可变集合(Set),则必须明确导入scala.collection.mutable.Map类。如果想同时使用可变的和不可变映射(Map),那么可以继续引用不可变映射(Map),但是可以将mutable集合引用mutable.Map。
scala> import scala.collection.mutable.Map
import scala.collection.mutable.Map
scala> var map = Map(1 -> "a", 2 -> "b", 3 -> "c")
map: scala.collection.mutable.Map[Int,String] = Map(2 -> b, 1 -> a, 3 -> c)
scala> println(map.keys)
Set(2, 1, 3)
scala> println(map.values)
HashMap(b, a, c)
scala> println(map.isEmpty)
false
scala> map += (4 -> "d")
res12: scala.collection.mutable.Map[Int,String] = Map(2 -> b, 4 -> d, 1 -> a, 3 -> c)
scala> map.foreach(value => print(value + " "))
(2,b) (4,d) (1,a) (3,c)
scala>