Scala之Array,List,Tuple,Set,Map

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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值