Kotlin学习之常用高阶函数:map
Map的中文意思是“映射”,它既可以作名词,也可以是动词。
一、Map系列
Array的map函数如下:
与filter相似,它也是委托给mapTo()方法实现:
mapTo()函数接受一个(T)->R类型的函数transform,对数组中的每个元素调用一次transform函数,再将返回值添加到destination中。
与filter函数的区别:
一个数组在执行filter函数后得到的List元素数只会少不会多,而且都是原数组中的数据;
执行map函数后得到的List元素一定与之前一样多,List内的元素一般不会是原数组的数据。
与filter函数相似,Koltin也提供了一些类似的map函数:
mapIndexed()与mapIndexedTo()函数:都接受两个参数的transform函数,第一个参数是Int类型的索引,第二个参数是被映射的元素类型。
mapIndexedNotNull()与mapIndexedNotNullTo()函数:过滤掉null的映射值。
mapNotNull()与mapNotNullTo()函数:相当于map+filterNotNull,过滤掉了null的映射值,映射后的元素也可能少于映射前。
flatMap()与flatMapTo()函数:这两个函数与其他map函数有所不同,的flatMapTo()函数如下:
操作上与mapTo()没有区别,唯一不同在于flatMap函数接受的transform函数,返回值本身就是一个集合,它会把返回集合中的所有元素添加到destination里。
二、实例
输入:字符串,含有多个大小写不一致的单词,使用空格分隔;
输出:字符串,要求将所有字符串调整为首字母大写的形式。
2.1Java解答
2.2Kotlin解答
String.split():通过 split() 函数分割字符串,这一步得到一个 ;
:分别处理分割后的字符串并映射到新的 List 里,需要注意到 Kotlin 字符串可以通过类似数组的方式取指定位置的 char 字符。这一步我们得到一个 ;
:根据要求将集合联结为字符串,它有 6 个可选的参数,分别指定分隔符、前缀、后缀、最大限制数、省略符和操作函数。
joinToString()函数支持传入一个transform函数,所以还可以简化为:
学海无涯苦作舟
领取专属 10元无门槛券
私享最新 技术干货