七:Array/List实操比较-Map需要留意地方

  • 目录:
  • 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(集)是一种不存在重复元素的集合,它与数学上定义的集合是对应的
元组–则是不同类型值的聚集

猜你喜欢

转载自blog.csdn.net/weizhonggui/article/details/84895487
今日推荐