Scala学习笔记——List
文章目录
前言
Scala 列表类似于数组,它们所有元素的类型都相同,
但是它们也有所不同:列表是不可变的,值一旦被定义了就不能改变
一、创建列表
1、创建空链表
var nil: Nil.type = Nil
var nil2: List[Nothing] = List()
2、创建链表
//创建链表
var list: List[String] = List("d", "b", "c")
var ints: List[Int] = List(1, 2, 3)
//使用 :: 创建链表
var ints1: List[Int] = 1 :: 2 :: 3 :: 4 :: Nil
二、连接两个链表
def main(args: Array[String]): Unit = {
var list: List[String] = List("d", "b", "c")
var ints: List[Int] = List(1, 2, 3)
var ints1: List[Int] = 1 :: 2 :: 3 :: 4 :: Nil
//1、使用 ::: 运算符
println(ints ::: ints1)
//2、使用List.concat(list1, list2)连接链表
println(List.concat(ints, list))
//3、使用List.:::(list2)方法连接链表
println(ints.:::(ints1)) //注意,这个方法ints1在前面,ints在后面
}
输出:
三、列表的属性
def main(args: Array[String]): Unit = {
var list: List[String] = List("d", "b", "c")
//获取列表长度
val size: Int = list.size
//判断列表是否为空
val empty: Boolean = list.isEmpty
}
四、列表常用方法
1、翻转链表
def main(args: Array[String]): Unit = {
var list: List[String] = List("d", "b", "c")
//列表翻转
println(list.reverse)
}
2、获取list指定位置的值以及给列表添加元素
def main(args: Array[String]): Unit = {
var list: List[String] = List("d", "b", "c")
//在list开头插入元素,返回一个新的list,原来list不会变
println("e" +: list)
println(list)
list = "e" +: list
println(list)
//在list结尾插入元素
//注: 冒号那边的始终是列表,加号那边的始终是要加入的元素,加入到开头还是结尾取决于元素在前面还是在后面
println(list :+ "e")
//通过列表索引获取元素
println(list.apply(2))
//获取开头或结尾元素
val head: String = list.head
val last: String = list.last
}
输出:
3、去除list元素
def main(args: Array[String]): Unit = {
var list: List[String] = List("d", "b", "c")
//去掉开头i个元素 :list.drop(i)
println(list.drop(1))
//去掉结尾i个元素 :list.dropRight(i)
println(list.dropRight(1))
}
输出:
4、列表排序
def main(args: Array[String]): Unit = {
var list: List[String] = List("d", "b", "c")
var ints1: List[Int] = 1 :: 2 :: 3 :: 4 :: Nil
//字符串排序
println(list.sortWith(_.compareTo(_) < 0))
//数字或其它排序
//降序排序
println(ints1.sortWith((o1, o2) => o1 > o2))
//升序排序
println(ints1.sortWith((o1, o2) => o1 < o2))
}
输出:
五、列表的遍历
def main(args: Array[String]): Unit = {
var list: List[String] = List("d", "b", "c")
//for循环
for (i <- list) {
print(i + " ")
}
println()
//foreach函数
list.foreach(print)
println()
//迭代器
val it: Iterator[String] = list.iterator
while (it.hasNext) {
print(it.next())
}
}
输出: