学习SCALA

这篇博客详细介绍了Scala中的变量声明,如`var`和`val`,以及各种集合操作,包括数组和ArrayBuffer的创建、修改、遍历、求和、排序等。示例展示了如何使用Scala的类型推导、for循环、过滤和映射操作,以及并发场景下ArrayBuffer转换为Array的重要性。

变量声明

var myVar : String = "Foo"

val ch : List[String] =  Nil 

 集合操作

    //最原始创建数组array1的方式,这个数组包含5个Int类型元素,5个元素初始化为0

val array1 = new Array[Int](5)
    //创建一个数组array2,用(1 2 3 4 5)5个Int型数据进行初始化

val array2 = Array[Int](1,2,3,4,5)
    //可以省略[Int]这个泛型类型,是因为Scala有类型推导能力,已经传进了当前数组的值,所以可以根据值来推导出类型;

val array3 = Array(1,2,3,4,5)
    //以下创建数组方法与val array2 = Array(1,2,3,4,5)等价

val array4 = Array.apply(1,2,3,4,5)
    //虽然array4是用val定义的,但数组元素的值是可以被再次赋值,第一个元素的值被修改为10

array4(4) = 10
    //通过for循环打印array4所有元素

for(i <- array4) println(i)

    //定义一个有3个字符串类型Array数组names

var names = Array("scala", "python", "r")

for(i <- names) println(i)
    //导入包scala.collection.mutable.ArrayBuffer

import scala.collection.mutable.ArrayBuffer

    //定义一个Int类型的ArrayBuffer

val array5 = new ArrayBuffer[Int]()

    //向数组arrayBuffer中追加一个元素

array5  += 1

array5  += 2

    //将序列(4 5 6 7 8 9 10)追加到数组arrayBuffer中

array5  += (4 5 6 7 8 9 10)

    //将一个Array数组追加到arrayBuffer中

array5  ++= array(1,2,3)   // 两个加号??

    //通过insert方法在arrayBuffer数组中length-1的位置插入指定元素,以下是插入两个元素100,1000

array5.insert( array5.length - 1, 100, 100)

    //通过remove方法删除arrayBuffer中指定位置的元素

array5.remove(array5.length - 2)

    //当需要多线程并发操作的时候,把ArrayBuffer转换成为Array就非常重要;

array5.toArray
    //以step等于2的方式遍历array5数组元素

for(i <- array5)println(i)

for(i <- 0 until array5.length )println(array5(i))

for(i <- 0 until (array5.length, 2 )println(array5(i))

    //以反序方式从数组末尾到数组头遍历元素

for(i <- (0 until array5.length ).reverse ) println(array5(i))

    //数组求和

array5.sum

    //数组求最大数

array5.max

    //打印array5 Max = 5

    //array6的值:1 2 3 4 5 6 7 8 9 10 1 2 100 3

val array6 = array5.toArray

    //对数组进行升序排序

scala.util.Sorting.quickSort(array6)

for(i <- array6)println(i)

println(array6.mkString(","))

    //"yield"语法在已经有的数组的基础上通过作用于每个元素来生成新的元素构成新的数组,这里对每一个元素都加1

val arrayAddone = for(i <- array6) yield i+ 1

print(arrayAddone.mkString(","))

    //提取数组array7中的偶数然后用"yield"语法对这些偶数进行加1操作,然后得到新的数组赋给array8

val array7 = for(i <- array6 if i%2== 0 ) yield i+ 1

print(array7.mkString(","))

    //通过filter提取偶数

print(array6.filter{i => i%2 == 0}.mkString(","))

    //同样是通过filter提取偶数,但采用的占位符方式

print(array6.filter{_%2 == 0}.mkString(","))

    //采用占位符方式提取数组偶数并进行乘10操作

print(array6.filter{_%2 == 0}.map{x => x*10}.mkString(","))

print(array6.filter{_%2 == 0}.map{_*10}.mkString(","))

 

    //+:  在列表的头部添加一个元素

    //:+  在列表的尾部添加一个元素

    //::  在列表的头部添加一个元素

//元素与集合相连是用::,而集合与集合相与是用:::

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值