说明
* 1. 链表的实现
分类
* 不可变List、可变List
可变&不可变的区别
* 不可变 : 链表初始化时,长度固定,不可修改
* 可变 : 链表长度可改变
import scala.collection.mutable.ListBuffer
/**
* @author gaocun
* @create 2021-10-29 6:51 PM */
object List_02 {
/*
* 说明
* 1. 链表的实现
* 分类
* 不可变List、可变List
* 可变&不可变的区别
* 不可变 : 链表初始化时,长度固定,不可修改
* 可变 : 链表长度可改变
* */
}
//不可变List
object ListTest extends App {
//1. 初始化
var list: List[Int] = List(1, 2, 3, 4)
//2. 打印list
println(list)
println(list.mkString("--"))
//3. 添加元素 (返回新对象,不会对原对象改变)
//尾部添加
var list1 = list.appended(5)
println(list)
println(list1)
var list2 = list :+ 6 //底层调用appended方法
println(list2)
//头部添加
var list3 = list.prepended(0)
println(list3)
var list4 = 5 +: list //底层调用prepended
println(list4)
var list5 = 0 :: list
println(list5)
println(list)
//4. 获取指定位置的数
println(list(0))
println(list(1))
//获取头部元素
println(list.head)
println(list.tail)
//5. 遍历list
list.foreach(println)
for (e <- list) {
println(e)
}
}
//可变List
object ListBufferTest extends App {
//初始化
var list = ListBuffer(1, 2, 3, 4)
//打印
println(list)
//添加元素 (修改自身对象)
//头部添加
0 +=: list // 底层调用prepend方法
list.prepend(-1)
println(list)
//尾部添加
list += 5 //底层调addOne方法
list.append(6) //底层调addOne方法
list.addOne(7)
println(list)
println("=====================")
//添加元素 (不改变自身对象,返回新对象)
//头部添加
var list1 = list.prepended(0)
println(list)
println(list1)
var list2 = -2 +: list // 底层调用prepended方法
//尾部添加
var list3 = list.appended(8)
println(list3)
println("======================")
//删除元素 (改变对象自身)
//指定索引删除,会报数组越界错误,返回被删除的元素
println(list)
println("根据元素位置删除 :" + list.remove(1))
println(list += 99)
//根据元素内容删除,返回删除后的对象指针
println("根据元素内容删除 :" + (list -= 88))
println(list)
//获取头部元素
println("获取head :" + list.head)
//获取尾部元素
println("获取tail :" + list.tail)
println("获取size :" + list.size)
println("获取length :" + list.length)
}