Scala的元组和数组

1、数组的定义

1.1定义定长数组
scala> val arr = Array(1,2,3,4,5,6)
arr: Array[Int] = Array(1, 2, 3, 4, 5, 6)
                            

scala> val arr1 = new Array[Int](10)
arr1: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

scala> println(arr1)
[I@332f25c8

scala> println(arr1.toBuffer)
ArrayBuffer(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

scala> println(arr.toBuffer)
ArrayBuffer(1, 2, 3, 4, 5, 6)

scala> println(arr)
[I@2650f79
1.2.定义不定长数组
scala> import scala.collection.mutable.ArrayBuffer

import scala.collection.mutable.ArrayBuffer

scala> val arr2 = ArrayBuffer[Int]()
arr2: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer()

scala> arr2 += 1
res6: arr2.type = ArrayBuffer(1)

scala> arr2 += (2,3,4)
res7: arr2.type = ArrayBuffer(1, 2, 3, 4)

scala> val arr = Array(7,8,9)
arr: Array[Int] = Array(7, 8, 9)

scala> arr2 ++= arr
res8: arr2.type = ArrayBuffer(1, 2, 3, 4, 7, 8, 9)

scala> arr2 ++= ArrayBuffer(11,12)
res9: arr2.type = ArrayBuffer(1, 2, 3, 4, 7, 8, 9, 11, 12)

关键的操作:+=、++=

++=是数组对数组的增值操作

+=是对单个数据的操作

append追加:

scala> arr2.append(21,22)

insert追加(0:下标,1,0是代表的要插入的数据)

scala>arr2.insert(0,1,0)

对数据的删除:-=

scala> arr2 -= 1
res15: arr2.type = ArrayBuffer(0, 1, 2, 3, 4, 7, 8, 9, 11, 12, 21, 22)

remove:第一个参数是指下标,第二个参数是下标往后的几个数据

scala> arr2.remove(2,2)

scala> arr2
res17: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(0, 1, 4, 7, 8, 9, 11, 12, 21, 22)

数组的转换

scala> val res = for(i <- 0 to arr2.length-1;if(i%2==0)) yield 1*10
res: scala.collection.immutable.IndexedSeq[Int] = Vector(10, 10, 10, 10, 10)

scala> val res = for(i <- 0 to arr2.length-1;if(i%2==0)) yield i*10
res: scala.collection.immutable.IndexedSeq[Int] = Vector(0, 20, 40, 60, 80)

scala> val res = arr2.filter(_%2 ==0)
res: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(0, 4, 8, 12, 22)

scala> val res = arr2.filter(_%2 ==0).map(_*10)
res: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(0, 40, 80, 120, 220)

数组的常用的一下算法

scala> arr2.sum
res18: Int = 95

scala> println(res18)
95

scala> arr2.max
res20: Int = 22

scala> arr2.min
res21: Int = 0

scala> arr2.sorted
res22: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(0, 1, 4, 7, 8, 9, 11, 12, 21, 22)

scala> arr2.reverse
res23: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(22, 21, 12, 11, 9, 8, 7, 4, 1, 0)

scala> arr2.sortWith(_<_)
res24: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(0, 1, 4, 7, 8, 9, 11, 12, 21, 22)

scala> arr2.sortWith(_>_)
res25: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(22, 21, 12, 11, 9, 8, 7, 4, 1, 0)

2、元组的定义

重要点:

scala> val tuple = ("hadoop",3.1415,45,'char')
<console>:1: error: unclosed character literal
       val tuple = ("hadoop",3.1415,45,'char')
                                            ^

scala> val tuple = ("hadoop",3.1415,45,"char")
tuple: (String, Double, Int, String) = (hadoop,3.1415,45,char)

scala> tuple._1
res26: String = hadoop

scala> tuple._4
res27: String = char

scala> val t,(x,y,z) = ("scala",12,3.14)
t: (String, Int, Double) = (scala,12,3.14)
x: String = scala
y: Int = 12
z: Double = 3.14

scala> x
res28: String = scala

scala> y
res29: Int = 12

scala> x
res30: String = scala

scala> z
res31: Double = 3.14

拉链操作

scala> val arr1 = Array("x","y","z")
arr1: Array[String] = Array(x, y, z)

scala> val arr2 = Array(1,2,3)
arr2: Array[Int] = Array(1, 2, 3)

scala> arr1.zip(arr2)
res32: Array[(String, Int)] = Array((x,1), (y,2), (z,3))

scala> arr1 zip arr2
res33: Array[(String, Int)] = Array((x,1), (y,2), (z,3))

scala> val arr3 = Array(1,2,3,4,5)
arr3: Array[Int] = Array(1, 2, 3, 4, 5)

scala> arr1 zip arr3
res34: Array[(String, Int)] = Array((x,1), (y,2), (z,3))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值