zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    【Java8新特性】你知道Java8为什么要引入Lambda表达式吗?
    你说你懂计算机网络,那这些你都知道吗
    程序员需要了解的硬核知识之控制硬件
    程序员需要了解的硬核知识之汇编语言(全)
    真的,Kafka 入门一篇文章就够了
    程序员需要了解的硬核知识之汇编语言(一)
    带你涨姿势的认识一下 Kafka 消费者
    程序员需要了解的硬核知识之操作系统和应用
    详解Kafka Producer
    程序员需要了解的硬核知识之操作系统入门
  • 原文地址:https://www.cnblogs.com/yyfyl/p/12423660.html
Copyright © 2011-2022 走看看