大数据全系列 教程
1869个小节阅读:467.3k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
由集合对象提供的方法执行自定义的功能,这样的方法被称为功能方法或功能函数。
比如:map映射方法、扁平化方法flatten和flatMap等方法
map方法
xxxxxxxxxx
package com.itbaizhan.chapter07
import scala.collection.mutable.ArrayBuffer
object CollectionMethod5 {
def main(args: Array[String]): Unit = {
val arrBuf: ArrayBuffer[Int] = ArrayBuffer(1, 2, 3, 4)
//需求将集合中的每个元素都乘以2=>ArrayBuffer(2, 4, 6, 8),如何做?
//TODO 1.方式一:
val result: ArrayBuffer[Int] = ArrayBuffer[Int]()
arrBuf.foreach(ele=>{
result.append(ele*2)
})
println(result)//ArrayBuffer(2, 4, 6, 8)
//方式一总结:该方式会浪费更多的内存空间,也不符合面向函数编程的思想
//TODO 2. 方式二 定义一个函数,然后调用该函数
val buff: ArrayBuffer[Int] = multi2(arrBuf)
println(buff)//ArrayBuffer(2, 4, 6, 8)
//总结:该方法不够灵活,比如万一需要 乘以其它值呢?
//TODO 3.方式三 升级方法
println(multi(arrBuf,2))
//println(multi(arrBuf,3))
//方式三总结,还是不够灵活,如果不需要 都加上某个值,或都减去某值,或都除以某值;需要分别定义一个方法。
//TODO 4. map映射 key->value
// map方法的参数需要一个函数 f: A => B
def mapFun(ele:Int): Int ={
ele *2
}
println("arrBuf.map(mapFun):"+arrBuf.map(mapFun))
//简化
//arrBuf.map((ele:Int)=>{ele*2})
//arrBuf.map(ele=>ele*2)
//arrBuf.map(_*2)
println(arrBuf.map(_*2))
println(arrBuf.map(_ + 2))
}
def multi2(arrBuf:ArrayBuffer[Int]): ArrayBuffer[Int] ={
val result: ArrayBuffer[Int] = ArrayBuffer[Int]()
arrBuf.foreach(ele=>{
result.append(ele*2)
})
result
}
def multi(arrBuf:ArrayBuffer[Int],num:Int): ArrayBuffer[Int] ={
val result: ArrayBuffer[Int] = ArrayBuffer[Int]()
arrBuf.foreach(ele=>{
result.append(ele*num)
})
result
}
}