zoukankan      html  css  js  c++  java
  • scala基础

    并集    

    "Hello".insertsect("World")

     scala基础操作

    import scala.math._
    object test {
      def main(args: Array[String]): Unit = {
        println(sqrt(2))
        println(pow(2,4))
        println(min(3,8))
    
        println(BigInt.probablePrime(4,scala.util.Random))
        //从2^4 和  2^(4-1)之间随机挑选一个素数
    
        println("hello".distinct)
        //和sqldistinct类似,保留单一字符
    
        //函数调用apply方法 调用语句是    def apply(n:int): Char
        print("hello".apply(3))
       //字符串转数字
        print(BigInt("45678"))
    View Code

    2.控制结构和函数

    /**
      * Created with IntelliJ IDEA.
      * User: @别慌
      * Date: 2019-07-15
      * Time: 8:56
      * Description: 
      */
    import scala.util.control.Breaks._
    import scala.math._
    object scala_test {
      def main(args: Array[String]): Unit = {
    
        /*
          scala if-else case
          val x =1
        val result =if (x>0) "bigger" else "small"
        print(result)
         */
    
        /*
        if-else if-else  case
    
        val x=9
        val re01=if (x>10) "more 10" else if(x>5) "big5" else "other"
        //如果if 后面为false 执行后面的 else if
        print(re01)
    */
    
    
    
    
        /*
        for (i<- 1 to 3;j<- 1 to 3 if i!=j) print((10*i+j)+" ")
         i  为  1,2,3
        j   为  1,2,3
        结果为 12 13 21 23 31 32
         */
    
    
        /*
        scala 中的 break
        import scala.util.control.Breaks._
    
        val x=10
    breakable{
      for (i<- 0 to x){
        if (i==5){
          break;
        }
        print(i+" ")
      }
    
    }
         */
    
    /*
    for 循环多生成器
     for (i<- 1 to 3;j<-1 to 3;if i!=j) print((10*i+j)+" ")
    
     result:  12 13 21 23 31 32
     */
    
    
        /*
        for 循环 生成新的 集合
        val Vector=for (i<- 1 to 10) yield i%3
        print(Vector)
         */
    
    /*
      // 函数
        def abs01(x:Double)=if(x>=0) x else  -x  // must decalare type
        print(abs01(-10))
     */
    
    
    
    
        /*
    
      def fac(n:Int)={
          var r = 1
          for (i<- 1 to n) r =r + i
          r
        }
        print(fac(3)+" ")
    
        r  1   2   4
        i  1   2   3
        back    4+3=7
         */
    
    /*
    递归计算必须指定返回值类型
    def fac(n:Int):Int=if (n<=0) 1
         else n * fac(n - 1)
         print(fac(3))
    3*2*fac(1) = 6
    let idea know the fac(n-1) type
     */
    
    
    /*
    默认参数   并不显式的指出参数值
     def decorate(str:String,left: String="[",right: String="]") =
        left+str+right
        print(decorate("hello,world"))
     */
    
    
        /*
        可变长函数
    
        def sum(args:Int*)={
          var result = 0
         for (arg<- args) result+=arg
          result
        }
        print(sum(3,2,1))     // 传入的是单数  而不是一个整数区间,解决办法
        print(sum(1 to 100:_*))
         */
    
        
    
      }
    }

    3.scala数组

    /**
      * Created with IntelliJ IDEA.
      * User: @别慌
      * Date: 2019-05-31
      * Time: 8:41
      * Description: 
      */
    import scala.math._
    import scala.collection.mutable.ArrayBuffer
    object test {
     def main(args: Array[String]): Unit = {
      //创建定长数组
      val nums = new Array[Int](10);
      val nums_1 = new Array[String](10);
    
      val s = Array("hello", "world","the","shy","faker","ruler")
      println("遍历数组所在的内存地址")
      println(nums)
      println(nums_1)
      println(s) //输出内存地址码,这里需要对数组进行遍历
    
      println("遍历数组第一种方式")
      for (inter <- s)  { //这里是遍历数组操作
       println(inter)
      }
    
       val  l=for (in <- s) yield  in+"  new_value "
      println("这里是数组转换为一个全新的数组")
      for (iop <- l)
       {
        println(iop)
       }
    
      println("遍历数组第二种方式并倒序输出")
      for (internet <- (0 to s.length - 1).reverse) {
       println(s(internet))
      }
    
      println("遍历数组第三种方式并每两个元素一跳")
      for (internet01 <- 0 until (s.length,2))  {
       println(s(internet01))
      }
       /*
     *
     */
    
       //创建变长数组 引用 数组包 import scala.collection.mutable.ArrayBuffer
       val b = ArrayBuffer[Int]()
       b += 1
       println("第一步结果,在尾端添加元素", b)
       b += (1, 2, 3, 5)
       println("第二步结果,在尾部添加多个元素", b)
       b ++= Array(8, 13, 21)
       println("第三步结果,追加任何集合", b)
       b.trimEnd(5)
       println("第四步结果,移除最后5个元素", b)
       b.insert(2, 7, 8, 9)
       println("第五步结果,在地址2处添加元素 7,8,9", b)
       println("And Then 遍历数组")
       for (i <- 0 to b.length - 1) {
        print(b(i) + " ")
       }
       println(" ")
       println("yield关键字生成新的数组")
       val result01 = for (elem <- b if  elem %2 ==0) yield 2 * elem
       for (cf <- result01){
        print(cf+" ")
       }
    
      println("数组B的和",b.sum,b.max,b.min)
      println("对数组进行排序")
    
      val bsorft=b.sorted    //正序
      for (lpp<- bsorft.reverse) //倒序
       println(lpp)
      }
     }
    View Code

     4.hash映射与元祖操作

    /**
      * Created with IntelliJ IDEA.
      * User: @别慌
      * Date: 2019-06-03
      * Time: 9:40
      * Description: 
      */
    object flect {
      def main(args: Array[String]): Unit = {
        println("不可变映射")
        var scores = Map("Alice" -> 10, "Bob" -> 3, "Cindy" -> 8)
        println("可变映射")
        val scores01=scala.collection.mutable.Map("Alice"->10)
        //val score02=scala.collection.mutable.Map[String,Int]
    
        val result01=if(scores.contains("Alice")) scores("Alice") else 0
        val result02=scores.getOrElse("Alice",0)
        println("得到映射中的值",result01)
        println("第二种得到映射中的方法",result02)
    
        println("更新映射中的值,仅限变长映射")
        scores01("Alice")=100
        val result03=scores01.getOrElse("Alice",0)
        println("更新映射关系",result03)
    
        scores01("Brouther")=666
        val result04=scores01.getOrElse("Brouther",0)
        println("新增Map  Hash 映射方法一",result04)
    
        scores01+=("Bob"-> 23,"Tom"->12,"Jack"->13)
        val result05=scores01.getOrElse("Tom",0)
        println("新增Map hash 映射方法二",result05)
    
        scores01-=("Bob")
        val result06=scores01.getOrElse("Bob",0)
        println("移除映射方法二",result06)
    
        println("更新不可变映射的方法")
        val newScore=scores+("Bob" -> 10)//也可以增加映射关系
        val result07=newScore.getOrElse("Bob",0)
        println("改变不变映射的值",result07)
    
        scores=scores - "Bob"
        val result08=scores.getOrElse("Bob",0)
        println("减去不可变映射的值",result08)
    
    
    
        println("元祖操作(不同类型集合)")
        var tuple1=(1,3.14,"CFPL")
        var result11=tuple1._3
        println("取出元祖中的某值(从1开始)",result11)
    
        
    
      }
    }
    View Code
    object simple {
      def main(args: Array[String]): Unit = {
        val  t="New York".partition(_.isUpper)
        println(t._1,t._2)
      }
    
    元祖可以用于函数需要返回不止一个值的情况
    
    拉链操作
    
    object simple {
      def main(args: Array[String]): Unit = {
       //拉链操作
        val symbols=Array("<","-",">")
        val count=Array(2,10,2)
        val paris=symbols.zip((count))
    
        for ((s,n)<-paris) Console.print(s,n)  //输出映射值   
    
        val map=symbols.zip(count).toMap
        println(map)
      }
    }

    第5章,类

    RUSH B
  • 相关阅读:
    java.lang.NoClassDefFoundError异常处理
    CMS之promotion failed&concurrent mode failure
    jvm 内存,线程,gc分析
    spring 参数校验
    常用的正则表达式
    《深入理解java虚拟机-高效并发》读书笔记
    ConcurrentHashMap源码分析
    web前端性能调优(二)
    由自动装箱和拆箱引发我看Integer源码
    阅读《effective java-第17条》遇到的问题解决与分享
  • 原文地址:https://www.cnblogs.com/tangsonghuai/p/10953294.html
Copyright © 2011-2022 走看看