• Scala学习笔记1


    scala数据结构,可大致分为数组(Aarray)元组(Tuple)列表(List)映射(Map)集合(Set)

    scala同时支持可变集合和不可变集合,不可变集合可以安全的并发访问

    scala优先采用不可变集合,当你采用可变集合的时候,需要导入scala.collection.mutable

    1.数组

    定长数组,长度不可变,但是可以修改元组,获取元素的值用小括号(下标)

    声明有两种方式

    (1)val arr = new Array[Int](10)

    (2)  val  arr= Array[Int](1,2,3,4,5,) 

    为什么没有new也能创建数组对象,原因是Array类内部有apply方法,scala会隐式调用。

    设置带有初始值的定长数组不能用new,因为调用Array的静态对象,可以传递多个参数,但是new的是调用的类的构造方法只能接受一个

    变长数组

    val arr=ArrayBuffer[Int](1,2,3,4)  arr+=2  arr++=Array[Int](3,4)   +=添加一个元素   ++=添加多个元素或者是一个数组

     arr.remove(下标值)

    可变数组.toArray=>不可变数组       不可变数组.toBuffer=>可变数组

    2.元组  是多个不同类型对象的一种简单的封装 

    val t = (1,2,3)  全部是Int类型     val t1=(1,2,"3")  有Int  String

    获取元组的方式  t._1的值是1  元组的下标从1开始  获取的方式是元组名称._下标

    元组的元素不可变  长度也不可变

    3.列表

    列表的声明方式

    val list=List(1,2,3,4)   获取元素值  list(0)=1

    不可变list元素不可修改,长度也不可以修改  

    添加元素

     

     提示:中缀的写法不加点,也不加括号

    可变列表 元素可变 长度可变

    val list = ListBuffer[Int](1,2,3)

    添加的元素的方式 list.append(1)   list+=4    list+=(6,7)     list ++=Array(8,9)    list ++=List(0,1)

    删除元素的方式 list-=1   list --=List(1,2)  

    ++=是生成了新list并赋值(原来的list发生改变)    ++是生成了新list但没有赋值(原来的list不变)

    空列表 Nil和元素组成得到新的列表  ListBuffer不能用::和:::

    相互转换   toList和toListBuffer

    集合  

    不可变的

    val set = Set[Int](1,2,3)

    set.head获取第一个元素   set.tail 获取剩下的元素  set.isEmpty判断是否为空

    可变的  HashSet  增加删除元素和List一样的方法

    映射

    哈希表相当于java的map,定义的方式 val map=Map("a"->1,("b",3),"c"->Array[Int](4,5,6))

    如果想获取a=1的值   map.get("a").get.asInstanceOf[Int]   过程Option[Any]=Some(1)  Any=1 Int=1  获取值的时候不存在抛异常

    不可变的map元素和长度都不可变

    val map = new HashMap[String,Int]

    增加元素的方式大致相同发   

    注意删除元素的方式:

    map -=("k的值")   map --=Set("c","d")------同时获取两个k  删除两个

    同时引用不可变和可变的映射的时候,可以起别名的方式避免冲突

    如何将 List(Array("a",1), Array("b",2)) 转化成  Map("a"->1, "b"-> 2)  三种方式

     

    val list=List(Array("a",1), Array("b",2))
    //val tuples: List[(String, Int)] = list.map(x=>{(x, x.length)})
    val t = list.map{case Array(x,y)=>(x,y)}
    val m = t.toMap
    println(m)

    foreach遍历list

    val list = List(1,2,3,4)
        list.foreach[Unit]((f:Int)=>{println(f)})
        list.foreach((f:Int)=>println(f))
        list.foreach((f)=>println(f))
        list.foreach(f=>println(f))
        list.foreach(println(_))
        list.foreach(println)
        list foreach  println
  • 相关阅读:
    [算法]最长的可整合数组的长度
    [算法]在行列都排好序的矩阵中找数
    [算法]在数组中找到出现次数大于N/K的数
    [算法]需要排序的最短子数组长度
    [算法]找到无序数组中最小的K个数
    [算法]“之”字形打印矩阵
    [java]final关键字、finally关键字与finalize()方法
    [算法]旋转矩阵问题(Spiral Matrix)
    [算法]位运算问题之三(实现加减乘除)
    [IDE]Intellij Idea学习整理
  • 原文地址:https://www.cnblogs.com/yyfyl/p/12423660.html
Copyright © 2020-2023  润新知