• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            The Fourth Dimension Space

            枯葉北風寒,忽然年以殘,念往昔,語默心酸。二十光陰無一物,韶光賤,寐難安; 不畏形影單,道途阻且慢,哪曲折,如渡飛湍。斬浪劈波酬壯志,同把酒,共言歡! -如夢令

            Scala數組操作

            scala中的數組比java的數組強大很多   
                1、定長數組:長度不變的數組Array,如:聲明一個長度為10的整形數組,val arr = Array[Int](10);聲明并初始化一個字符串數組: val arrStr = Array(“wo”,”cha”,”yo”)。訪問數組方式:訪問arrStr第一個元素,arrStr(1)即可
                2、變長數組(即數組緩沖):java中有ArrayList和scala中的ArrayBuffer等效;但是ArrayBuffer更加強大,通過下面的事列來熟悉ArrayBuffer:
            import collection.mutable.ArrayBuffer
                val arrbuff1 = ArrayBuffer[Int]()
                val arrBuff2 = ArrayBuffer(1,3,4,-1,-4)
                arrbuff1 += 23    //用+=在尾端添加元素
                arrbuff1 += (2,3,4,32) //同時在尾端添加多個元素
                arrbuff1 ++= arrBuff2 //可以用 ++=操作符追加任何集合
                arrbuff1 ++= Array(2,43,88,66)
                arrbuff1.trimEnd(2) //移除最后的2個元素
                arrbuff1.remove(2)  //移除arr(2+1)個元素
                arrbuff1.remove(2,4) //從第三個元素開始移除4個元素
                val arr = arrbuff1.toArray //將數組緩沖轉換為Array
                val arrbuff2 = arr.toBuffer //將Array轉換為數組緩沖
                3、遍歷數組和數組緩沖:在java中數組和數組列表/向量上語法有些不同。scala則更加統一,通常情況,我們可以用相同的代碼處理這兩種數據結構,for(…) yield 循環創建一個類型和原集合類型相同的新集合。for循環中還可以帶守衛:在for中用if來實現。
                for(i <- 0 until arrbuff1.length) yield arrbuff1(i) * 2 //將得到ArrayBuffer(2,6,4,-2,-4)
                for(i <- 0 until (arrbuff1.length,2)) yield arrbuff1(i) * 2 //將得到ArrayBuffer(12,-4)
                for(elem <-0 arrbuff1) print(elem) //如果不需要使用下標,用這種方式最簡單了
                for(i <- arrbuff1 if arrbuff1 > 0) print i //打印出arrbuff1中為整數的值
                arrbuff1.filter( _ > 0).map{ 2 * _} //生成arrbuff1中的正數的兩倍的新集合
                arrbuff1.filter {_ > 0} map {2 * _} //另一種寫法
                4、常用算法:scala有很多便捷內建函數,如
                arrbuff1.sum //對arrbuff1元素求和
                Array("asd","sdf","ss").max //求最大元素
                arrbuff1.sorted(_ < _)  //將arrbuff1元素從小到大排序
                arrbuff1.sorted(_ > _)  //從大到小排序
                util.Sorting.quickSort(Array) //針對數組排序,單不能對數組緩沖排序
                val arr = Array(1,23,4,2,45)
                arr.mkString(",") //指定分割符
                arr.mkString("(",",",")") //指定前綴、分隔符、后綴
            更多函數參見Scaladoc
                5、多維數組:
            val matrix = Array.ofDim[Int](5,4) //三行四列的二維數組
            matrix(2)(3) //訪問第二行、第三個元素
                6、scala數組和java互操作:由于scala數組是用java數組實現的,所以可以在java和scala之間來回傳遞,引入scala.collectin.JavaConversion ,可以在代碼中使用scala緩沖,在調用java方法時,這些對象會被自動包裝成java列表。反過來講,引入scala.collection.asScalaBuffer時,當java方法返回java.util.List時,我們可以讓它轉換成一個Buffer

            轉自:http://www.kankanews.com/ICkengine/archives/128572.shtml

            posted on 2014-10-04 11:52 abilitytao 閱讀(32069) 評論(3)  編輯 收藏 引用

            評論

            # re: Scala數組操作 2015-05-06 09:05 hpf

            val b = ArrayBuffer(1,7,2,9)
            val bSorted = b.sorted(_ > _)
            我這樣寫怎么報錯  回復  更多評論   

            # re: Scala數組操作 2015-07-17 14:26 niuzi

            @hpf
            sorted 沒有參數,默認按照>進行排序,這是快學scala里面的一處錯誤,應該用sortedWith(_ > _)  回復  更多評論   

            # re: Scala數組操作 2015-07-28 16:50 wyz

            sortWith( _ > _ )  回復  更多評論   

            久久婷婷国产综合精品| 狠狠精品干练久久久无码中文字幕| 久久99精品国产99久久6男男| 香蕉久久av一区二区三区| 久久久久久亚洲精品成人| av午夜福利一片免费看久久| 日韩欧美亚洲综合久久影院d3| 久久国产香蕉一区精品| 久久人人爽人人人人爽AV| 亚洲精品乱码久久久久久按摩| 人妻精品久久无码区| 国产精品视频久久久| 新狼窝色AV性久久久久久| 久久香蕉综合色一综合色88| 亚洲а∨天堂久久精品9966| 国产99久久精品一区二区| 久久婷婷五月综合成人D啪| 国产精品一区二区久久精品| 精品久久久久久国产三级| 日本WV一本一道久久香蕉| 三级片免费观看久久| 久久久久久久人妻无码中文字幕爆 | 亚洲综合精品香蕉久久网97 | 人妻丰满?V无码久久不卡| 日本久久久久亚洲中字幕| 欧美无乱码久久久免费午夜一区二区三区中文字幕| 三级三级久久三级久久| 久久国产精品国语对白| 7777久久亚洲中文字幕| 综合网日日天干夜夜久久| 97精品国产97久久久久久免费| 国产精品欧美亚洲韩国日本久久 | 久久99精品国产麻豆婷婷| 久久久久久夜精品精品免费啦| 久久久久久久97| 午夜精品久久久久久影视riav| 女同久久| 中文字幕无码久久人妻| 无码国内精品久久综合88| 一本大道久久香蕉成人网| 思思久久好好热精品国产|