41_集合_List(链表)
说明
* 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) }