scala基础之函数、集合

本文深入讲解Scala编程语言的基础知识,包括变量定义与使用、函数定义与调用,以及数组、List和Map等集合类型的创建与操作。通过实例演示了Scala的强大特性和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、值与变量

//1、val(常量)、var(变量)
var/val 变量名:类型=值
var money:Int=15
money=20
println(money)
val age:Int=25
//age=19       //报错:val相当于java里的final,定义的是常量,赋值后不可改变。

//2、数据类型,强制类型转换
var a:Int=20
var b=a.asInstanceOf[Double]
println(b)

//类型判断
println(b.isInstanceOf[Int])

二、scala函数

1、定义语法

def 函数名(参数列表):返回值类型={方法体}

2、有返回值方法的定义

def 方法名(参数名:参数类型):返回类型={方法体}

注:方法体内最后一行为返回值,无需使用return

eg:

def main(args: Array[String]): Unit = {
  def add(x:Int,y:Int):Int={
    x+y
  }
  println(add(3,5))

  def three()=1+2
  three()
  println(three)         //当调用的函数没有参数时,方法的括号可省略      three
}

3、没有返回值方法的定义

def 方法名(参数名:参数类型){方法体}

eg:

def main(args: Array[String]): Unit = {
  def sayHello(): Unit ={
    println("say hello...................")
  }
  sayHello()
}

三、scala集合

scala的所有集合类都可以在scala.collection中找到,其架构体系如下:

注意:

在scala集合中通常用两种:可变的和不可变的。区别在于集合的长度是否可以调整,对于不可变的在定义时指定长度后便不可再更改。

1、数组

Array:定长数组(长度不可变)

1)定长数组:数组采用()访问,下标从0开始。

eg:

//数组创建两种方式
var a = new Array[String](5)  //方式一
//不用new,直接将值写在数组中
var b = Array("aa","bb","cc")   //方式二

println(a)        //返回的是数组的hashcode-->[Ljava.lang.String;@649d209a
a.length
a(1)="hello"   //为指定index位置的元素进行赋值

//数组常见算法:sum min  max
var c = Array(1,2,3,4,5,6,7,8)
println(c.sum)

2)变长数组:长度可变--->ArrayBuffer

eg:

import scala.collection.mutable.ArrayBuffer
 //创建变长数组
  var c = scala.collecton.mutable.ArrayBuffer[Int]()
  //变长数组常用操作:+=  ++=   insert    remove   toArray    sum   max    reverse

  //+=可以添加一个或者多个元素
  c+=1   //每次产生的都是一个新的数组
  c+=2
  c+=(3,4,5)   //一次添加多个元素
  c++=Array(6,7,8)      //++可以放置一个Array进去

  c.insert(0,0)    //在指定的位置插入指定的数
  c.remove(1)     //删除指定位置的数据
  c.remove(0,3)     //输出范围数据,从指定位置开始,删除几个数据。从第0个开始,删除3个
  c.trimEnd(2)    //移除最后的两个,从尾部截断指定个数的元素

  //变成定长数组toArray[T]
  c.toArray    //Array[Int]=Array(4,5,6,7,8)
  c.toArray.sum  //Int=30
  c.toArray.min      //Int=4

  //数组的遍历
  //普通遍历:
 for(i <- 0 until c.length) println(c(i))     //从索引位置0开始遍历,直到c.length
//增强for循环遍历
  for (i <- c) println(i)    //遍历输出c中所有元素

2、List

1)创建变长List

//创建变长List
val h = ListBuffer[Int]()
//增加元素
h += 2
h += (3,4,5)       //一次添加多个元素
h ++= List(6,7,8)   //++可放置一个List
println(h)       //ListBuffer(2, 3, 4, 5, 6, 7, 8)

//删除元素
h -= 2   //删除元素2
h -= 3    //删除元素3
println(h)     //ListBuffer(4, 5, 6, 7, 8)
//-------------------------
h -= (1,4)   //删除第一个元素4
println(h)     //ListBuffer(5, 6, 7, 8)

h --= List(5,6,7,8)    //删除一个list
println(h)     //ListBuffer()

3、Map

key-value映射

//创建不可变map
val a = Map("zhangsan"->27,"lisi"->26)
println(a)        //Map(zhangsan -> 27, lisi -> 26)
//a("zhangsan")=30    //报错,因为a是不可变map

//可变map创建方式:用箭头
val b =scala.collection.mutable.Map("zhangsan"->27,"lisi"->26)

//创建空的HashMap
val c = scala.collection.mutable.Map[String,Int]()

//取值map(key)
val a1 = a("zhangsan")
println(a1)

//map.getOrElse(key,default),有就取没有就用默认值
a.getOrElse("lisi",default = 10)

//更新
b("zhangsan")=9

//添加元素
b += ("bb"->4,"cc"->6)

//删减元素
b -= "bb"

//遍历
for ((key,value) <-b){
  println("key is" + key + "value is" + value)
}
println("***********************************************")
for (i <- b.keySet){
  println("key is"+i + "value is "+ b.getOrElse(i,0))
}

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值