Scala几类基本常用类型(Array,List,Tuple,Set,Map)和常用的操作(map,foreach,reduce)

创建 Array,可变的同类对象序列,长度不可变,值可变:  val example = new Array[String](3)  创建长度为3的空数组,数组里的元素类型为字符串,数组赋值可以通过example(0) = "a"    注意:字符串是双引号,字符是单引号,在Scala里面

也可以用  val example:Array[String] = new Array[String](3),因为Scala有类型推断,所以前面是否有类型定义不影响创建过程,但是可以提高可读性。

打印数组元素:可以用to, 也可以用until,区别在于:to 会到最后一位,until类似于python range,只会到length-1这个位置,正好符合;因为数组是从索引 0 开始计数的。

val example = new Array[String](3)
val example:Array[String] = new Array[String](3)  #第一行第二行等价

example(0) = "a"
example(1) = "b"
example(2) = "c"

for (i<- 0 to a.length-1){
   println(a(i))
}

for (i<- 0 to until a.length){
  println(a(i))
}

数组更新:example.update(0,"value");前面的数字表示索引位置,后面的"value"代表更新值,需要符合数组定义的类型;

列表:不可变类型,创建列表:val example = List(),创建空列表,并且,区别于Python,Scala中列表没有append方法,如果需要添加元素,可以使用 value :: example方法,其中value表示添加的值,值会添加在列表前面,examle::value 值添加在后面;需要去列表元素类型一致;或者使用可变列表类型ListBuffer,进行列表元素修改;List1 ::: List2   列表合并;列表取数的方法与数组一样,example(0);0是索引位置。都不能进行切片操作(Python可以进行切片)

Scala常用的List方法:

example.head()        返回列表第一个元素
example.last()        返回列表最后一个元素
example.init()        返回除最后一个元素以外的,其他所有元素
example.tail()        返回除第一个元素以外,其他所有元素
example.drop(2)       删除前面两个元素
example.dropRight(2)  删除从后面算的,两个元素
example.reserve()     列表翻转
example.count(s =>s==1) 返回条件为真的元素数量

Scala 元组Tuple:不可变类型,但是区别于List,元组可以包含几种不同的数据类型

val example = ("a",1)
example._1
example._2
#元组区别前面两种形式的取数方式,可以认为元组是由1索引开始

Scala 集合Set: 存在可变与不可变类型,需要用户定义调用,默认可变类型:元素类型可以多样

var example = Set("a",1,2)
example += 3
返回test:("a",1,2,3)

import scala.collection.immutable.HashSet
HashSet只能包含一种数据类型,否则报错;

Scala Map:可变Map 键值对形式引入,

import scala.collection.mutable.mutable.Map
val example = Map[Int,String]()

example += (1-> "hello")
example += (2-> "world")
example(1)  输出hello 

对Map进行循环遍历时,每次得到是一个tuple,倘若需要打印键值对,可以在此基础上操作:如下:

for(s <- example){
  var KeyValue = s
  println(KeyValue._1)
}
打印结果:
        1
        2

如果换成 println(KeyValue._2)
则打印 hello
       world  

map、flatmap方法:

val example = List[Int](1,2,3)
example.map(s => s + 1)
返回:List[Int](2,3,4)  对每个元素,进行一个 + 1 操作;


Reduce:递归操作

求和:
val  example = List[Int](1,2,3,4)
example.reduce((sum,n) => sum + n)
返回值:10
执行过程:sum = 1; n = 2
         sum = 1 + 2; n = 3
         sum = 1 + 2 + 3; n = 4
         sum = 1 + 2 + 3 + 4; 

返回最大值:

example.reduce((max,n) => if (max>n) max else n)
返回:4
执行过程同上

Foreach:遍历执行,对每个元素进行操作,类似于Map操作

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值