3.Scala列表

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_15014327/article/details/83624740
package scala

object ListTest {
  def main(args: Array[String]): Unit = {
    //1.创建List
    val fruit = List("Apple", "Banana", "Orange")
    val fruit1 = List.apply("Apple", "Banana", "Orange")
    val nums = List(1, 2, 3, 4, 5)
    //多重List
    val diagMatrix = List(List(1, 1, 1), List(2, 2, 2), List(3, 3, 3))
    //遍历List
    for (i <- nums) println(i)

    /**
     * List和Array不同之处:
     * 1.List一但创建,其值不能被改变
     * 2.List具有递归结构,如:链表结构
     * 3.List跟其他类型集合一样,具有协变性
     */
    //2.List常用构造
    //采用::及Nil进行列表构建
    val num = 1 :: (2 :: (3 :: (4 :: Nil)))
    //::操作符的优先级由右往左
    val num1 = 1 :: 2 :: 3 :: 4 :: 5 :: Nil

    //3.List常用操作
    println(num.isEmpty) //判断是否为空
    println(num.head) //取第一个元素
    println(num.tail) //取除了第一个元素外的剩余元素,返回的是列表
    println(num.tail.head) //取第二个元素
    println(num.init) //取除了最后一个元素外的元素,返回列表
    println(num.last) //列表最后一个元素
    println(num.reverse) //列表元素倒置
    //插入排序
    def isort(xs: List[Int]): List[Int] =
      if (xs.isEmpty) Nil
      else insert(xs.head, isort(xs.tail))

    def insert(x: Int, xs: List[Int]): List[Int] =
      if (xs.isEmpty || x <= xs.head) x :: xs
      else xs.head :: insert(x, xs.tail)
    //List连接操作
    println(List(1, 2, 3) ::: List(4, 5, 6))
    //丢弃前n个元素
    num drop 3
    //获取前n个元素
    num take 3 //num.take(3)
    //将列表进行分割,前2个元素一组,其余一组
    println(num1.splitAt(2)) //(num1.take(2),num1.drop(2))
    //zip操作    返回的是List类型的元组(Int,Char)
    val num2 = List(1, 2, 3, 4)
    val chars = List('1', '2', '3', '4')
    println(num2 zip chars)
    //mkString
    println(num2.mkString)
    //转换成数组
    println(num2.toArray)

    //4.伴生对象
    //apply方法
    println(List.apply(1, 2, 3))
    //range方法,构建某值范围内的List
    println(List.range(2, 6))
    //步长2
    println(List.range(2, 6, 2))
    //步长-1
    println(List.range(14, 6, -1))
    //unzip方法
    val xs = List((1, "one"), (2, "two"), (3, "three")).unzip
    //列表连接
    List.concat(List('a', 'b'), List('c'))
  }
}

参考自:https://blog.csdn.net/column/details/scalalearning.html

猜你喜欢

转载自blog.csdn.net/qq_15014327/article/details/83624740
今日推荐