zoukankan      html  css  js  c++  java
  • scala (5) 可变序列和不可变序列

    /**
    * 序列分为可变长和不可变长,序列其实就是list,底层是链表结构
    * 特点:插入有序,可重复,增加和移除元素很快,查询慢
    * 不可变长序列:List
    * 可变长序列:ListBuffer
    */
     /**
       * 不可变长序列List ,长度不可变,角标元素也不可变
       */
        val list = List(1,2,3,4,5)
        /*list(0) = 11
        println(list(0))   //  Error:(17, 5) value update is not a member of List[Int]  list(0) = 11*/
    
        //++ 并没有改变原有的list,只是将连个list序列进行合并形成一个新的list
        val list1 = list ++ List(6,7,8)
        println(list1)   // List(1, 2, 3, 4, 5, 6, 7, 8)
        println(list.toBuffer)  // ArrayBuffer(1, 2, 3, 4, 5)
    /**
      * 定义可变长序列
      */
        val listb = ListBuffer(1,2,3,4,5)
        // += 或 -= 后面只能跟一个单个的元素
        listb += 11
        listb -= 1
        println(listb)   //  ListBuffer(2, 3, 4, 5, 11)
    
        // ++= 或--后面只能跟一个序列 List 或 ListBuffer
        listb ++= List(23)
        listb ++= ListBuffer(25)
        listb.append(34,35)
        println(listb)    // ListBuffer(2, 3, 4, 5, 11, 23, 25,34,35)
    
        //移除指定角标的元素
        listb.remove(0)
        //从指定角标开始,移除指定个数的元素
        listb.remove(1, 2)
       /**
          * 给list头部添加元素
          */
        val list01 = List(4, 5, 6)
        //注意,这里并不是将元素添加到list01里面,而是将list01和后面的元素(1,2,3)进行合并然后形成一个新的list
        //newList,需要注意的是后面的(1,2,3)是作为一个整体和list0进行合并
        var newlist = list01.:: (1,2,3)     // List((1,2,3), 4, 5, 6)
        newlist = list01.+:(1, 2, 3)        //  List((1,2,3), 4, 5, 6)
        newlist = (1,2,3) ::list01          //  List((1,2,3), 4, 5, 6)
        newlist= (1,2,3) +:list01           //  List((1,2,3), 4, 5, 6)
        newlist = list01 ++ List(1,2,3)     // List(1, 2, 3, 4, 5, 6)
    
        /**
          * 给list尾部添加元素
          */
        var list02 = List(4, 5, 6)
        //这里也是将(7,8,9)作为整体同list02进行合并添加到尾部,形成一个新的list
        var newList02 = list02.:+(7, 8, 9) //List(4, 5, 6,(7, 8, 9))
    
        //将7,8,9进行拆分同list02进行合并插入到list02后面去形成一个新的list,原来的list并没有改变
        newList02 = list02 ++ List(7, 8, 9) //List(4, 5, 6, 7, 8, 9)
       /**
          * 序列的常用操作方法
          */
        val lt = List(1, 2, 3, 4, 5)
        //求和
        println(lt.sum) //15
        //最大值
        println(lt.max) //5
        //最小值
        println(lt.min) //1
        //第一个元素
        println(lt.head) //1
        //最后一个元素
        println(lt.last) //5
        //反转序列,形成一个新的list,原来的list不会别改变
        println(lt.reverse) //List(5, 4, 3, 2, 1)
        //拼接
        println(lt.mkString) //12345
        println(lt.mkString(",")) //1,2,3,4,5
        println(lt.mkString("[", ",", "]")) //[1,2,3,4,5]
      
        /**
          * 序列的转换操作
          */
        val list03 = List(1,2,3,4,5,6,7,8)
        list03.map(_ * 2).filter(x => x > 10).distinct.reverse.foreach(println(_))
  • 相关阅读:
    Android5.0之Activity的转场动画
    Android5.0之CardView的使用
    Android5.0之CoordinatorLayout的使用
    Android5.0之NavigationView的使用
    Android开发之Bitmap二次采样
    android自定义View之NotePad出鞘记
    android自定义View之仿通讯录侧边栏滑动,实现A-Z字母检索
    android自定义View之钟表诞生记
    Spring经典高频面试题,原来是长这个样子
    Redis: 缓存过期、缓存雪崩、缓存穿透、缓存击穿(热点)、缓存并发(热点)、多级缓存、布隆过滤器
  • 原文地址:https://www.cnblogs.com/mlfh1234/p/9232399.html
Copyright © 2011-2022 走看看