1. 程式人生 > >scala中list集合的操作與總結

scala中list集合的操作與總結

unit flat script red char cte 條件 atm pan

/**
  * Created by root
  * Description :  List
  */
object ListTest {

  def main(args: Array[String]): Unit = {
      println()
  }

  val  a = List(1,2,3,4)
  for (i <- a) println(i)

  // 將0添加到a中
  val b = 0::a
  for (i <- b) println(i)

  val c = List("x","y","z")

  // 兩個list合並
  val d = a ::: c
  
for (i <- d) println(i) println(a.head) // 返回第一個元素 println(a.tail) // 返回除第一個元素的List println(a.isEmpty) // 判斷List是否為空 // 取出List中的偶數; // filrter高階函數:他的參數就是一個匿名函數,匿名參數輸入參數x就代表的是列表中的一個元素, // filter會遍歷列表中的每個元素,每個元素就去套用傳進來的匿名函數的判斷條件,如果判斷為true就保留這個元素 val e = a.filter(x => x % 2 ==0) println(e)
// filter簡寫 val e1 = a.filter(_ % 2 ==0) println(e1) // 過濾字符串中的數字 val str = "123 hello scala 168" val f = str.toList.filter(x => Character.isDigit(x)) println(f) // 取到某個字符之前的所有字符 val g = str.toList.takeWhile(x => x != ‘s‘) println(g) // map高階函數:將每個元素進行轉換映射 val h = c.map(x => x.toUpperCase()) println(h)
// map簡寫 val h1 = c.map(_.toUpperCase) println(h1) // 取出列表中的偶數,並且為每個元素加上100 val k = a.filter(_ % 2 ==0).map(_ + 100) println(k) // 兩層List val q = List(a,List(4,5,6)) // 取出q中的所有偶數;第一步:map獲取每個list,第二步:filter過濾每個list中的偶數元素 val r = q.map(x => x.filter(y => y % 2 == 0 )) println(r) // 簡寫 val r1 = q.map(_.filter(_ % 2 ==0)) println(r1) // flatMap高階函數:是將List中的結果打平 val p = q.flatMap(_.filter(_ % 2 == 0)) println(p) // 總結map與flatMap區別 // map:返回的結果和原List結構一致,如果是兩層,返回的就是兩層;r: List[List[Int]] = List(List(2,4), List(4, 6)) // flatMap:返回的結果只有一層List結構; p: List[Int] = List(2, 4, 4, 6) // 規約操作:reduceLeft(op:(T,T) => T) // 求List中元素的和 val m = a.reduceLeft((x,y) => x + y) println(m) // reduceLeft簡寫 val m1 = a.reduceLeft(_ + _) println(m1) // 規約操作:foldLeft(z:U)(op:(U,T)) => U // 求List中元素的和 val n = a.foldLeft(0)((x,y) => x+y) println(n) // 簡寫 val n1 = a.foldLeft(0)(_ + _) println(n1) }

scala中list集合的操作與總結