• Scala语言基础(2)


    数据结构:

    数组:

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

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

    1. //冒泡排序
    2. def bubbleSort(arr:Array[Int])={
    3. for (i <- 0 to arr.length-1){
    4. for (j <- i to arr.length-1){
    5. var temp:Int = 0
    6. if (arr(i) > arr(j)){
    7. temp = arr(i)
    8. arr(i) = arr(j)
    9. arr(j) = temp
    10. }
    11. println(arr.mkString(" "))
    12. }
    13. }
    14. arr
    15. }
    16. }
    17. 复制代码

    集合:

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

    list:

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

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

    1. // 字符串
    2. val fruit: List[String] =List("apples","oranges","pears")
    3. // 整型
    4. val nums: List[Int] = List(1, 2, 3, 4)
    5. //
    6. val empty: List[Nothing] = List()
    7. // 二维列表
    8. val dim: List[List[Int]] =
    9. List(
    10. List(1, 0, 0),
    11. List(0, 1, 0),
    12. List(0, 0, 1) )
    13. 复制代码

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

    1. // 字符串
    2. val fruit = "apples":: ("oranges":: ("pears" :: Nil))
    3. // 整型
    4. val nums = 1 :: (2 :: (3 :: ( 4 :: Nil)))
    5. // 空列表
    6. val empty = Nil
    7. // 二维列表
    8. val dim = (1 :: (0 :: (0 :: Nil))) ::
    9. (0 :: (1 :: (0 :: Nil))) ::
    10. (0 :: (0 :: (1 :: Nil))) :: Nil
    11. 复制代码

    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:

    1. object MapDemo01 {
    2. def main(args: Array[String]): Unit = {
    3. val sites = Map("zueb" -> "www.zueb.edu.cn",
    4. "baidu"->"www.baidu.com",
    5. "taobao"->"www.taobao.com")
    6. for(i<-sites.keys){
    7. print("key="+i)
    8. println("value="+sites(i))
    9. }
    10. }
    11. }
    12. 复制代码

    集合中的高阶函数:

    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()方法可以迭代输出元组的所有元素,元素的输出顺序和定义时相同。

    访问元组中的每个元素:

  • 相关阅读:
    Spring基础之AOP
    如何安装docker,scrapingslash
    webpack性能优化之打包优化
    力扣第406题 根据身高重建队列 c++ 贪心思维
    【CSS】基础使用,层级关系,选择器
    第3章-线性方程组(3)
    Java 多线程(七):线程池
    单片机——通过对P3口地址的操作流水点亮8位LED
    Springboot如何判断pom.xml中是否加载了某个jar依赖
    [附源码]计算机毕业设计springboot疫情物资管理系统
  • 原文地址:https://blog.csdn.net/kilig_CSM/article/details/126868716