Scala常用方法大全(附代碼案例)會不定時更新

轉自:https://blog.csdn.net/JENREY/article/details/80727168

1.flatten

可以把嵌套的結構展開.

scala> List(List(1,2),List(3,4)).flatten
res0: List[Int] = List(1, 2, 3, 4)
2、flatmap

flatMap結合了map和flatten的功能。接收一個可以處理嵌套列表的函數,然後把返回結果連接起來。

scala> List(List(1,2),List(3,4)).flatMap(x=>x.map(x=>x*2))
res5: List[Int] = List(2, 4, 6, 8)
3.filter

濾除掉使函數返回false的元素

scala> def isEven(i: Int): Boolean = i % 2 == 0
isEven: (i: Int)Boolean
scala> List(1,2,3,4).filter(isEven _)
res6: List[Int] = List(2, 4)
4.zip

zip方法將兩個集合結合在一起

scala>  List('a,'b,'c).zip(List(1,2,3))
res32: List[(Symbol, Int)] = List(('a,1), ('b,2), ('c,3))
5.zipWithIndex

將元素和下標結合在一起

scala> List(2,3,4,5).zipWithIndex
res33: List[(Int, Int)] = List((2,0), (3,1), (4,2), (5,3))
6、foreach

foreach和map相似,只不過它沒有返回值,foreach只要是爲了對參數進行作用。

比如 names.foreach{name=>println(name)}
7.mkString 方法

scala通過mkString方法把一個集合轉化爲一個字符串


使用mkString方法來打印一個集合內容,下面給一個簡單的例子:

    scala> val a = Array("apple", "banana", "cherry")
    a: Array[String] = Array(apple, banana, cherry)
     
    scala> a.mkString
    res3: String = applebananacherry

    使用mkString方法你會看到結果並不漂亮,我們來加一個分隔符:

    scala> a.mkString(",")
    res4: String = apple,banana,cherry
     
    scala> a.mkString(" ")
    res5: String = apple banana cherry

    這樣看起來就好看多了,同樣你可以添加一個前綴和一個後綴:

    scala> a.mkString("[", ", ", "]")
    res6: String = [apple, banana, cherry]

    如果你想把一個嵌套集合轉化爲一個字符串,比如嵌套數組,首先你要展開這個嵌套數組,然後調用mkString方法:

 如果你想把一個嵌套集合轉化爲一個字符串,比如嵌套數組,首先你要展開這個嵌套數組,然後調用mkString方法:

    scala> val a = Array(Array("a", "b"), Array("c", "d"))
    a: Array[Array[String]] = Array(Array(a, b), Array(c, d))
     
    scala> a.flatten.mkString(",")
    res7: String = a,b,c,d

數組常用算法:

scala> val arr=Array(1,2,3,4,5,6,7,8,9)
arr: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
scala> arr.sum
res29: Int = 45
scala> arr.max
res30: Int = 9
scala> arr.min
res31: Int = 1
scala> arr.toString()
res32: String = [I@374f10bb
scala> arr.mkString("#")
res33: String = 1#2#3#4#5#6#7#8#9
scala> arr.mkString("<",",",">")
res34: String = <1,2,3,4,5,6,7,8,9>
序列類--List

val list1=List(1,2,3)

//將0插入到list1的前面生成一個新的List        0,1,2,3

val lst2=0 :: list1

val lst3=list1 .:: (0)

val lst4=0 +: list1

val lst5=list1 .+: (0)

//將一個4添加到List1的後面產生一個新的集合        1,2,3,4

val lst6=list1 :+ 4        


val list2=List(4,5,6)

//將兩個List合併成一個新的List

val lst7=list1 ++ list2        //1,2,3,4,5,6

//將list2放到list1後面生成一個新的集合

val lst8= list1 ++: list2

//將list2插入到list1前面生成一個新的集合

val lst9=list1 .::: (list2)


    :: 該方法被稱爲cons,意爲構造,向隊列的頭部追加數據,創造新的列表。用法爲 x::list,其中x爲加入到頭部的元素,無論x是列表與否,它都只將成爲新生成列表的第一個元素,也就是說新生成的列表長度爲list的長度+1(btw, x::list等價於list.::(x))

    :+和+: 兩者的區別在於:+方法用於在尾部追加元素,+:方法用於在頭部追加元素,和::很類似,但是::可以用於pattern match ,而+:則不行. 關於+:和:+,只要記住冒號永遠靠近集合類型就OK了。

    ++ 該方法用於連接兩個集合,list1++list2

    ::: 該方法只能用於連接兩個List類型的集合

//判斷是否爲空

scala>list1.isEmpty

res108:Boolean=false

//取第一個元素

scala>list1.head

res109:Int=1

//取除了第一個元素剩餘的元素,返回的是列表

scala>list1.tail

res110:List[Int]=List(2,3,4)

//取列表第二個元素

scala>list1.tail.head

res111:Int=2

//插入排序算法實現

def isort(xs : List[Int]) : List[Int]=

if( xs.isEmpty ) Nil

else insert( xs.head , isort(xs.tail))


def insert(x : Int,sx : List[Int]) : List[Int]=

if( xs.isEmpty || x<=xs.head) x :: xs

else xs.head :: insert(x,xs.tail)

//List 連接操作

scala>List(1,2,3) ::: List(4,5,6)

res123:List[Int]=List(1,2,3,4,5,6)

//取除最後一個元素外的元素,返回的是列表

scala>list1.init

res124:List[Int]=List(1,2)

//取列表最後一個元素

scala>list1.last

res125:Int=3

//列表元素倒置

scala>list1.reverse

res126:List[Int]=List(3,2,1)

//一些好玩的方法調用

scala>list1.reverse.reverse == list1

res127:Boolean = true

scala>list1.reverse.init

res128:List[Int]=List(3,2)

scala>list.tail.reverse

res129:List[Int]=List(3,2)

//丟棄前n個元素

scala>list1 drop 2

res130:List[Int]=List(3)

//獲取前n個元素

scala>list1 take 1

res131:List[Int]=List(1)

//將列表進行分割

scala>list1.splitAt(2)

res1: (List[Int], List[Int]) = (List(1, 2),List(3))

//前一個操作與下列語句等同

scala>(list1.take(2),list1.drop(2))

res3: (List[Int], List[Int]) = (List(1, 2),List(3))

//Zip操作

scala>val nums=List(1,2,3,4)

scala>val chars=List('1','2','3','4')

scala>nums zip chars

res4: List[(Int, Char)] = List((1,1), (2,2), (3,3), (4,4))

//List toString 方法

scala>list1.toString

res1:String=List(1,2,3)

//List mkString方法

scala>list1.mkString

res1:String=123

//轉化成數組

scala>list1.toArray

res1:Array[Int]=Array(1,2,3)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章