版权声明:本文为博主原创文章,未经博主允许不得转载。 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