scala基础语法-集合

来源:互联网 发布:网络机房拓扑图 编辑:程序博客网 时间:2024/05/24 06:50
package org.xj.scala.spark


/**
 * 集合,Lise,Set,Map,Tuple
 */
class Basic6 {


}


object Basic6 extends App {
  val l = List(1, 2, 3) //值允许重复
  //println(l)
  val ll = l.map(2 * _) //_相当于l里面的每一个元素,这里写法等价于-->l.map((x:Int)=>2*x) l.map((x) => 2*x) l.map(x => 2*x)
  //println(ll)


  val s = Set(1, 2, 1) //值不允许重复
  //println(s)


  //Tuple元组类型操作
  val hostPort = ("localhost", "8080")
  //println(hostPort )


  //访问元组信息的方式-->做模式匹配用的很多
  //println(hostPort._1)
  //println(hostPort._2)


  val x = "a" -> "b" //等价      (String,String) => (a,b)
  //println(x)


  //Map操作
  val m = Map(1 -> "ccc") // Map("a"->"b","a"->"c","a"->"f")
  //println(m)


  val m1 = Map("a" -> "b", "b" -> "c", "c" -> "f")
  //println(m1("a"))


  //Option操作---表示可有可无的值
  val m2 = Map(1 -> 2)
  //  println(m2(1))


  //  println(m2.get(1)) //--Some(2)
  //  println(m2.get(1).get) //--2
  //  println(m2.get(0).getOrElse("None")) //-- None,不存在的值


  val a = List(1, 2, 3, 4, 5, 6, 7)
  //  println(a.map(3 * _)); //map,有返回值List(3, 6, 9, 12, 15, 18, 21)---迭代
  //  
  //  println(a.foreach(3*_)) //遍历,foreach没有返回值()---类似map没有但是没有返回值


  //println(a.filter(x => x % 2 == 0)) //filter--过滤


  //val b = List(1,2,3)
  val b = List(1, 2, 3, 4)
  val c = List(4, 5, 6)


  //println(b.zip(c)) //zip聚合,a为基准和b配对,
  //println(b zip c)


  //println(a.partition(_ % 2 == 0)) //partition 列表分割,把偶数和基数分开存放得到两个List
  
  val d = List(List("a","b"),List("c","d")).flatten//flatten扁平化,多个List变成一个List
  //println(d)
 
  
  val e = List(List(1,2),List(3,4)).flatMap(x=>x.map(_*2))   //flatMap (map+flatten) 迭代+扁平化
  println(e)
  
}
0 0