- 目录:
- 1、数组实操
- 2、List实操:
- 3、Array和List区别:
- 4、Map实操:
- 5、其他列表
1、数组实操
1.1、定长数组
//定义
scala> val a =new Array[Boolean](5)
a: Array[Boolean] = Array(false, false, false, false, false)
scala> val a =new Array[String](5)
a: Array[String] = Array(null, null, null, null, null)
scala> val a =new Array[Int](5)
a: Array[Int] = Array(0, 0, 0, 0, 0)
//写
scala> a(1)=10
scala> a
res13: Array[Int] = Array(0, 10, 0, 0, 0)
/读
scala> a(1)
res14: Int = 10
// 数组可以不用new,直接引用apply方法创建
scala> val b = Array(1,2)
b: Array[Int] = Array(1, 2)
数组相关:
数组操作中的常用算法:max/min/sum/mkstring(",")
1.2变成数组
insert/toArray/
import scala.collection.mutable.ArrayBuffer
scala> val c = ArrayBuffer[Int]()
c: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer()
scala> c += 3
res15: c.type = ArrayBuffer(3)
scala> c
res16: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(3)
scala> c ++= Array(2,3,4)
res17: c.type = ArrayBuffer(3, 2, 3, 4)
scala> c.remove(0)
res18: Int = 3
scala> c
res19: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(2, 3, 4)
2、List实操:
scala> Nil
res1: scala.collection.immutable.Nil.type = List()
一串可重复的组合:head+tail
scala> val a = 1 :: Nil
a: List[Int] = List(1)
def sum (nums:Int*):Int={
if (nums.length == 0){
0
}else{
nums.head+ sum(nums.tail:_*)
}
3、Array和List区别:
3.1:List一但创建,其值不能被改变 ,改变其值的话,编译器会报错
scala> val Araaya = Array(1,2,3,4,5,6)
Araaya: Array[Int] = Array(1, 2, 3, 4, 5, 6)
scala> val Listb = List(1,2,3,4,5,6)
Listb: List[Int] = List(1, 2, 3, 4, 5, 6)
scala> Araaya(1)=8
scala> Araaya
res1: Array[Int] = Array(1, 8, 3, 4, 5, 6)
scala> Listb(1)=8
<console>:13: error: value update is not a member of List[Int]
Listb(1)=8
3.2 2 List具有递归结构(Recursive Structure),例如链表结构
4、Map实操:
Map是一种键值对的集合,一般将其翻译为映射
取值的时候一定要给个默认值,否则会报错
Map取值的时候一定要用 getorEles
scala> Mapb.getOrElse("gender","unknown")
res2: Any = unknown
Option,None,Some类型
Option、None、Some是scala中定义的类型,它们在scala语言中十分常用,因此这三个类型非常重要,None、Some是Option的子类,它主要解决值为null的问题,
在java语言中,对于定义好的HashMap,如果get方法中传入的键不存在,方法会返回null,在编写代码的时候对于null的这种情况通常需要特殊处理,然而在实际中经常会忘记,因此它很容易引起 NullPointerException异常。
在Scala语言中通过Option、None、Some这三个类来避免这样的问题,这样做有几个好处,首先是代码可读性更强,当看到Option时,我们自然而然就知道它的值是可选的,然后变量是Option,比如Option[String]的时候,直接使用String的话,编译直接通不过。
Set(集)是一种不存在重复元素的集合,它与数学上定义的集合是对应的
元组–则是不同类型值的聚集