`

scala 变量,集合

阅读更多

 

  var 可变,可重新赋值,赋值为"_"表示缺省值(0, false, null),例如:

 

	                var d:Double = _ // d = 0.0
			
			var i:Int = _ // i = 0
			
			var s:String = _ // s = null

 

 

val不可变

 

    val (x,y) = (10, "hello")

 

 

def 实时返回结果变量,可作为方法返回结果,方便使用

 

def t = System. currentTimeMillis // 每次不一样

 

 

类型转化:

1强转换

 

var i = 10.asInstanceOf[Double] //类型强制
println(i)
println(List('A','B','C').map { x => (x+32).asInstanceOf[Char] })

 在强转换Array[Object]到Array[String]则会报错,建议arr.map{x=>x.toString//加上的处理什么的}

 

2.implicit隐式转化

 

  implicit def typeConvertor(input:Int):String = input.toString

  implicit def typeConvertor(input:Boolean):String = if(input) "true" else "false"

 

    display("1212")
    display(12)
    display(true)

 

 

3.表示Array转为普通序列

  val options = parse(args2:_*)

 

  def parse(x:Int*) = {
    for(i <- x)
      println(i)
  }

 

 

----

集合

集合map方法:

 

//transation的map方法,seq,list,map...
    var arr1 = Seq(1,2,3,4,5)
    var maparr = arr1.map(p=>{
      p+10
    })

 

 

1.List是不可变的,Tuple可以包含不同元素

var arr2 = List(1,2,3,4,5,1)
println(arr2.map { case(a) => a+1})

2.Map

    var maptest = Map(1->2,3->4,5->6,1->5)
    println(maptest.map{case(k,v)=>k})

 

    //map 1是key,2是value
    println(maptest.map(_._1))
    println(maptest.map(_._2))

 

3.Seq 去重集合

     println(arr2(0))
     println(arr1(0))
     println((1,2,3)._1)
     var ttt = Set(1,2,3)
     ttt+=1

 

4.Array定长集合,可变内容,不变长度,和java交互式,一般集合转为此类

var pathList = new Array[String](list.size())
    for(i <- 0 to list.size()-1){
      pathList(i)=list.get(i)
    }
    pathList = pathList.map { x => path+pathSeperate+x }

 

5.ArrayBuffer 变长变内容的集合

private var cis=ArrayBuffer[(String,Option[ZkDTState],Option[String],Option[Array[String]])]();

  

    for(po <- list){
      var stat = readContent(zkclient,po._1+pathSeperate+pathContent,po._2)
      var nodes = readchildNodesInfo(zkclient, po._1+pathSeperate+pathNodes)
      var active = readChildActiveNodeInfo(zkclient, po._1+pathSeperate+pathActive)
      cis.+=((po._1,stat,active,nodes))
    }

 

6.集合的filter,groupBy方法:

 

println("相同的arr2元素分到一个组,并过滤大于1"+arr2.groupBy(groupm).filter{case(a,b) => (a>1)}.keys)

 groupBy方法按照函数参数groupm分组

 

  def groupm[A](x:A):A=x;

 将相同的元素分到一个组里,返回map[Int,List[Int]]

filter方法,(a,b),a是groupBy返回的值Int,b是集合arr2中相同的元素集合List[Int]

最终过滤值大于1的,获得map的key

这一行的作用是去重

 

 

 

 

 

 

 

 

1
4
分享到:
评论

相关推荐

    最好的scala学习 课件

    你会学习到Scala的语法结构,包括变量声明、常量、数据类型(如基本类型、引用类型、集合类型)、运算符、流程控制语句(如if-else、for循环、while循环)以及函数和方法的定义。此外,你还将了解Scala的模式匹配和...

    scala习题精选100道附带解析

    - **知识点概述**:Scala中的变量分为两种类型:不可变的val和可变的var。 - **详细解析**: - **val a = 3**:定义一个不可变变量a并赋值为3。 - **var b: Int = 3; b = 6**:定义一个可变变量b并赋值为3,然后...

    Scala考试题1

    15. **Java 集合与 Scala 集合的转换**: - 导入 `scala.jdk.CollectionConverters`,可以使用 `.asJava` 和 `.asScala` 转换。 16. **函数 values**: - 编写一个函数,根据给定区间和函数,生成对应的输入输出...

    快学Scala 课后习题答案集合

    1. **Scala基础**:Scala的基础包括变量定义、数据类型(如Int、Double、String等)、运算符、流程控制(如if-else、for循环、while循环)等。课后习题可能涉及到编写简单的程序来理解这些概念。 2. **面向对象编程...

    快学Scala课后习题答案

    8. **集合库**:Scala的集合库非常强大,提供了各种操作和转换,如map、filter、reduce等。集合可以被视作惰性序列,允许延迟计算和高效处理大量数据。 9. **类型类**:类型类是一种设计模式,允许在运行时添加功能...

    scala实战高清讲解

    - 函数:Scala将函数视为一等公民,可以作为变量赋值、作为参数传递和作为返回值。函数字面量和高阶函数是其重要特点。 - 语法:Scala的语法紧凑且富有表达力,例如模式匹配和for推导式。 2. **类型系统** - ...

    scala编程入门教材

    4. **集合框架**:Scala的集合库非常强大,包含了列表、数组、映射(Map)、集(Set)等多种数据结构。它们支持函数式编程操作,如map、filter、fold等。 5. **模式匹配**:Scala的模式匹配允许对值进行解构,用于...

    scala-2.12.14.zip&scala-2.12.11.tgz Linux版本压缩包.rar

    5. **集合库**:Scala的集合库强大且高效,提供了丰富的操作,如map、filter和reduce等。 在压缩包中,我们只看到了"scala-2.12.14"这一条子文件名,这可能是指Scala的二进制分发包,其中包括Scala解释器、编译器和...

    scala核心编程总结

    1. **Variables(变量)**:Scala支持多种变量类型,包括`val`用于声明不可变变量和`var`用于声明可变变量。这种设计有助于提高代码的可读性和维护性。 2. **Functions(函数)**:Scala中的函数是一等公民,可以...

    Scala中文版

    8. **强大的集合库**:Scala的集合库提供了丰富的操作和转换,如map、filter和fold,这些操作在处理数据时非常高效。 9. **DSL设计**:由于其表达力强,Scala非常适合构建领域特定语言(DSL),这使得开发人员能够...

    快学Scala 课后习题答案集合-中文版

    这个“快学Scala 课后习题答案集合-中文版”涵盖了Scala学习中的关键知识点,包括注解(第十五章)和高级类型(第十八章)等主题。下面将对这些主题进行详细的解释。 **注解(Annotations)** 在Scala中,注解是一种元...

    scala学习源代码

    另外,Scala有丰富的集合API,这些集合支持丰富的函数式操作,如map、filter和reduce,它们使数据处理变得简单且易于理解。 Scala的类型系统非常强大。它采用了静态类型,每个值都有其特定的类型,这在编译时就能...

    scala学习笔记整理

    4. **集合库**:Scala的集合库强大且高效,包含List、Set、Map等多种数据结构,并且它们都是惰性求值的。集合操作如map、filter、fold等都是函数式编程的常见操作,能够编写出简洁、易读的代码。 5. ** Trait**:...

    Programming In Scala 中文版及英文版

    2. **函数式编程**:Scala支持高阶函数,函数可以作为一等公民,可以赋值给变量、作为参数传递和作为返回值。另外,函数可以匿名定义,即Lambda表达式,以及使用`map`、`filter`、`reduce`等函数式操作对集合进行...

    scala-2.12.7.zip

    2. **配置环境变量**:将Scala的bin目录添加到系统PATH环境变量中,这样可以在命令行中直接运行`scala`命令。 3. **验证安装**:在终端中输入`scala -version`,如果正确设置,你应该能看到Scala 2.12.7的版本信息。...

    Scala编程完整版

    1. **变量声明**:Scala有两种变量类型,val(不可变)和var(可变)。例如,`val x = 10` 和 `var y = 20`。 2. **数据类型**:Scala有基本类型(如Int、Double、Boolean等)和引用类型(如String、Array等)。 3. ...

    Scala编程 pdf

    6. **集合库**:Scala的集合库非常强大,提供了各种操作和转换方法,支持高效的并行处理。 7. ** Actors模型**:Scala内置了Actors模型,用于并发编程,它基于消息传递,提供了一种安全的处理并发问题的方式。 8. ...

Global site tag (gtag.js) - Google Analytics