Scala语言的简单练习

巩固下基础,练习下
map
foreach
zip
partition
find
flatmap : map后将结构展开
flatten :将结构展开

object ScDemo3App {

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

    val list = List(1,2,3,4,5,6,7,8,9)

//    list.map(x => x*2).foreach(println)

//    list.filter(x => x%2 == 0).foreach(pr
    /**
     * 变成元组 (1,4)(2,5)...
     * 位数不够的就省略了
     */
    List(1,2,3,6).zip(List(4,5,6,7)).foreach(println)

    /**
     * 分成两块了
     * (List(2, 4, 6, 8),List(1, 3, 5, 7, 9))
     */
    println(list.partition(x => x % 2 == 0))

    /**
     * Some(2)
     * 第一个匹配到的
     */
    println(list.find(_ % 2 == 0))

    /**
     * List(1, 2, 3, 5, 6, 7, 8)
     */
    println(List(List(1, 2, 3), List(5, 6, 7, 8)).flatten)

    val myList = List(List(1,2,3),List(4,5,6,7))

    /**
     * List(2, 4, 6, 8, 10, 12, 14)
     */
    println(myList.flatMap(x => x.map(_ * 2)))
  }

}
object ScDemo4App {

  def main(args: Array[String]): Unit = {
    //    mapMethod()

            listMethod()

    //    vectorMethod()

    setMethod()
  }

  def mapMethod(): Unit = {

    //不可变集合
    val map = scala.collection.immutable.Map("zhangsan" -> "23", "lisi" -> "22")

    println(map.getOrElse("zhangsan", -1))

  }

  def listMethod(): Unit = {
    //不可变列表
    val list = List(1, 2, 3, 4)
    println(list.head) //1
    println(list.tail) //List(2, 3, 4)
    println(list.isEmpty) //false

    println(list.mkString("||"))
    //可变列表 不推荐使用!
    val myList = scala.collection.mutable.LinkedList(1, 2, 3, 4)
    var cur = myList
    while (cur != Nil) {
      cur.elem = cur.elem * 2
      cur = cur.next
    }
    println(myList)

  }

  /**
   * 序列
   */
  def vectorMethod(): Unit = {
    val vec = Vector(1, 3, 5, 6)
    println(vec.find(_ % 2 == 0)) //Some(6)

    println(vec.updated(2, 100)) //Vector(1, 3, 100, 6)

    println("first" + Range(0, 5)) //fristRange(0, 1, 2, 3, 4)

    println("second:" + (0 to 5)) //second:Range(0, 1, 2, 3, 4, 5)

    println((0 until 5)) //Range(0, 1, 2, 3, 4)
  }

  def setMethod(): Unit = {
    val ss = Set(1, 2, 3)
    println(ss + 1)
    println(ss + 4)

    println(ss.contains(1))

    val ss2 = Set(2)
    println(ss2.subsetOf(ss))

    println(ss.intersect(ss2))    //Set(2)
    println(ss.drop(2))
  }

}
object ScDemo5App {


  def main(args: Array[String]): Unit = {
    //    test1()
    //    test2()

    //    test3()

    test4()
  }

  def test1(): Unit = {
    var index = 1

    val sign = "="

    sign match {
      case "+" => index = 10
      case "-" => index = 20
      case _ if index > 0 => index = 100
      case _ => index = 200
    }

    println(index)
  }

  /**
   * 注意是单引号 匹配字符
   */
  def test2(): Unit = {
    val str = "Hello World"

    str(2) match {
      case 'w' => println("this is w")
      case 'e' => println("this is e")
      case 'l' => println("this is l")
      case _ => println("Nothing")
    }
  }

  def test3(): Unit = {
    val tt: Any = 4d

    tt match {
      case x: String => println("this is String" + x)
      case s: Double => println("this is Double" + s)
      case y: Int => println("this is Int" + y)
      case _ => println("this is anything")
    }
  }

  def test4(): Unit = {
    val list = List(1, 2, 3)

    list match {
      case List(0) => println("list 0")
      case List(x, y) => println("two:" + (x + y))
      case List(x, y, z) => println("three:" + (x + y + z))
      case _ => println("this is nothing")
    }
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值