Scala之Array,List,Tuple,Set,Map

来源:互联网 发布:起点听书软件 编辑:程序博客网 时间:2024/06/05 18:02
package com.scala.study/**  * Created by Administrator on 2016/8/8.  */object Test {  def max(x:Int,y:Int):Int={          if(x>y) x          else y  }  /**    * 函数只有一条语句时,可以不用花括号{ }    * @param x    * @param y    * @return    */  def max2(x:Int,y:Int)=if(x>y) x else y  def arrayTest(): Unit ={      val numbers = Array("one","two","three");      for (i<- 0 to 2){         System.out.println(numbers(i))      }  }  /**    * 不同与Java的List,Scala的List一旦创建就不可改变    */  def listTest(): Unit ={      val oneTwo=List(1,2)      val threeFour = List(3,4)      val oneTwoThreeFour=oneTwo :::threeFour      println(""+oneTwo+" and " + threeFour +" were not mutated.")      println("Thus,"+oneTwoThreeFour+" is a new List.")  }  /**    * ::把新元素组合到现有列表的最前端,然后作为执行结果返回新的列表    */  def listTest2(): Unit ={    val  towThree = List(2,3)    val oneTwoThree=1 :: towThree//::是towThree的操作数    println(oneTwoThree)// List(1,2,3)  }  /**    * Nil相当与空的List    * 可以使用::操作符把所有元素串起来。然后以Nil结尾,来定义一个新的列表    */  def listTest3(): Unit ={    val oneTwoThree=1 :: 2 :: 3 :: Nil    println(oneTwoThree)  }  /**    * 了解List一些方法的用法    */  def  listTest4(): Unit ={    val list=List("Tracy","WestBrook","Drunt","James","Kobe")    println(list(2))//返回在list列表上索引为2的元素Drunt    println(list.count(s => s.length==4))//技术长度为4的String元素个数,1个    println(list.drop(2))//返回去掉前2个元素的list列表 list("Drunt","James","Kobe")    println(list.dropRight(2))//返回去掉后两个元素的list列表 list("Tracy","WestBrook","Drunt")    println(list.exists(s => s=="Harden"))//判断是否有值为Harden的元素 false    println(list.filter(s => s.length==4))//返回长度为4的元素依次组成新列表 list("Kobe")    println(list.forall(s => s.endsWith("s")))//判断列表所有的元素是否都以s结尾的 false    println(list.foreach(println))//对list列表中的每个字符串执行print语句    println(list.head)//返回List列表的第一个元素,Tracy    println(list.init)//返回list列表除去最后一个元素的其他元素所组成的列表 list(Tracy,WestBrook.Drunt,James)    println(list.dropRight(1))//以上一个方法的结果相同    println(list.isEmpty)//判断列表是否为空 false    println(list.last)//返回list列表的最后一个元素 Kobe    println(list.length)//返回列表的元素数量 5    println(list.map(s => s+"y"))//返回由List列表里每一个String元素都加了y  list("Tracyy","WestBrooky","Drunty","Jamesy","Kobey")    println(list.mkString(","))//返回由列表元素组成的字符串,用,分割  Tracy,WestBrook,Drunt,James,Kobe    println(list.reverse)//返回逆序排成的新列表 list("Kobe","James","Drunt","WestBrook","Tracy")  }  /**    * 元组也是不可变,但可以包含不同类型的元素    * 元组的类型取决于它包含的元素数量和元素类型    * 这也是为什么元组不能像List那样list(i)来获取元素了,    * List的apply方法始终返回同一个类型,但是Tuple的类型不尽相同    * 用点,下划线,基于1的索引获取元素    */  def tupleTest: Unit ={    val pair =(99,"Luftballons")    println(pair._1)    println(pair._2)  }  /**    * (1)Set通过类继承的差别,把可变性差异蕴含其中    * (2)Set提供了两个子特质(特质类似Java的Interface),分为可变和不可变    *    */  def setTest(): Unit ={        val jetSet=Set("Boeing","Airbus")//默认创建不可变的        val jetSetNew=jetSet+"Lear"//创建并返回包含了新元素的新Set        println(jetSetNew.contains("Lear"))  }  /**    * 可变的set需要导入import scala.collection.mutable.Set    */  def mutableSetTest(): Unit ={    import scala.collection.mutable.Set    var movieSet=Set("Hitch","Poltergeist")    movieSet +="Shrek"//可变集把元素加入自身    println(movieSet)  }  /**    * 可变的Map    */  def mutableMap(): Unit ={    import scala.collection.mutable.Map    var treasureMap = Map[Int,String]()    treasureMap += (1 -> "Go to island.")    treasureMap += (2 -> "Find big X on ground.")    treasureMap += (3 -> "Dig.")    println(treasureMap(2))//Find big X on ground  }  /**    * 对于不可变的map,不需要引入相关的Map,因为默认就是不可变的    */  def immutableMap(): Unit ={    val romanNumeral=Map(      1 ->"I",2 ->"II",3 ->"III",4 ->"IV",5 ->"V"    )    println(romanNumeral(4))//IV  }  def main(args: Array[String]): Unit = {    immutableMap  }}
0 0
原创粉丝点击