• 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(_))
  • 相关阅读:
    【转】 url中文乱码问题
    [转]Jquery 点击图片在弹出层显示大图
    JQuery获取和设置Select选项的常用方法总结
    springMVC框架下返回json格式的对象,list,map
    sqlserver数据库 表中字段值有空格,如何去除空格(例如char (5) 存入数据不足5位时sqlserver会自动补空格)
    jquery Jbox 插件实现弹出窗口在修改的数据之后,关闭弹出窗口刷新父页面的问题
    sqlserver 2008 r2 直接下载地址,可用迅雷下载
    web服务器与tomcat
    xml入门与解析
    jdbc框架-dbutils的简单使用
  • 原文地址:https://www.cnblogs.com/mlfh1234/p/9232399.html
Copyright © 2020-2023  润新知