Scala语言基础(2)

数据结构:

数组:

数组主要用来存储数据类型相同的元素。数组中某个指定的元素是通过索引来访问的,数组的第一个元素索引为0,最后一个元素的索引为元素总数减1;
Scala中的数组分为定长数组和变长数组,定义定长数组,需要使用new关键字,而定义变长数组时,则需要导包import scala.collection.mutable.ArrayBuffer。

练习:冒泡排序法
将6,-2,5,9,3,8,3,7,7,2由小到大排序.

//冒泡排序
  def  bubbleSort(arr:Array[Int])={
     for (i <- 0 to arr.length-1){
        for (j <- i to arr.length-1){
           var temp:Int = 0
           if (arr(i) > arr(j)){
             temp = arr(i)
             arr(i) = arr(j)
             arr(j) = temp
           }
          println(arr.mkString(" "))
        }
     }
    arr
  }
}
复制代码

集合:

在Scala中,集合有三大类: List、Set以及Map,所有的集合都扩展自Iterable特质。Scala 集合分为可变的(mutable)和不可变(immutable)的集合。其中,可变集合可以在适当的地方被更新或扩展,也就是说你可以修改,添加,移除一个集合的元素。相比之下,不可变集合类永远不会改变。不过,你仍然可以模拟添加,移除或更新操作。但是这些操作将在每一种情况下都返回一个新的集合,同时使原来的集合不发生改变。

list:

在Scala中,List列表和数组类似:
1.所有元素都具有相同类型,2. 可以存放重复元素。但它又不同于数组:
(1)列表(List)一旦被创建就不能改变其中的元素;
(2)列表(List)底层的数据结构是链接表,而数组是一块连续的内存。
(3)因为列表是不可变的,所以所有操作它的方法或者构造器都会创建一个新的列表。

定义列表有两种方法:
(1)实例化List对象

// 字符串
val fruit: List[String] =List("apples","oranges","pears")
// 整型
val nums: List[Int] = List(1, 2, 3, 4)
// 空
val empty: List[Nothing] = List()
// 二维列表
val dim: List[List[Int]] =
            List(
            List(1, 0, 0),
            List(0, 1, 0),
            List(0, 0, 1) )

复制代码

(2)构造符构造( Nil 和 ::)

// 字符串
val fruit = "apples":: ("oranges":: ("pears" :: Nil))
// 整型
val nums = 1 :: (2 :: (3 :: ( 4 :: Nil)))
// 空列表
val empty = Nil
// 二维列表
val dim = (1 :: (0 :: (0 :: Nil))) ::
                (0 :: (1 :: (0 :: Nil))) ::
                (0 :: (0 :: (1 :: Nil))) :: Nil

复制代码

list常用方法:

list列表的连接:
使用 ::: 运算符或 List.:::() 方法来连接两个或多个列表。 注意,连接顺序;不同类型的列表是无法拼接的

set:

在Scala中,Set是没有重复对象的集合,所有元素都是唯一的。默认情况下,Scala 使用不可变Set集合,若想使用可变的Set集合,则需要引入 scala.collection.mutable.Set 包。

set常用方法:

Map:

在Scala中,Map是一种可迭代的键值对(key/value)结构,并且键是唯一的,值不一定是唯一的,所有的值都是通过键来获取的。Map中所有元素的键与值都存在一种对应关系,这种关系即为映射。Map有两种类型,可变集合与不可变集合,默认是不可变Map。若需要使用可变的Map集合,则需要引入 import scala.collection.mutable.Map 类。

示例:

常用方法:

遍历map的keys和values:

object MapDemo01 {
  def main(args: Array[String]): Unit = {
     val sites = Map("zueb" -> "www.zueb.edu.cn",
      	   "baidu"->"www.baidu.com",
    	  "taobao"->"www.taobao.com")
    for(i<-sites.keys){
    	  print("key="+i)
     	 println("value="+sites(i))
    }
  }
}

复制代码

集合中的高阶函数:

map:是指通过一个函数重新计算列表中所有元素,并且返回一个相同数目元素的新列表
foreach:和map类似,但是foreach没有返回值,foreach只是为了对参数进行作用。
filter:过滤移除使得传入的函数的返回值为false的元素
flatten:可以把嵌套的结构展开,或者说flatten可以把一个二维的列表展开成一个一维的列表。
flatMap:结合了map和flatten的功能,接收一个可以处理嵌套列表的函数,然后把返回结果连接起来。
groupBy:是对集合中的元素进行分组操作,结果得到的是一个Map。
reduce:对数据进行规约。
示例:

任务:对List(“hello tom hello jerry”, “hello jerry”, “hello kitty”)进行单词计数。

元组:

Scala的元组是对多个不同类型对象的一种简单封装,它将不同的值用小括号括起来,并用逗号作分隔,即表示元组。Scala的元组是允许重复元素存在的。

元组的基本操作:

获取元组中的第一个值:t._1
获取元组中的第二个值:t._2
定义元组 val t = ("zueb",3.14,65535)
遍历操作: productIterator()方法可以迭代输出元组的所有元素,元素的输出顺序和定义时相同。

访问元组中的每个元素:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷月半明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值