LinkedList

mac2025-08-02  3

object Test02 { def main(args: Array[String]): Unit = { val resultList = scala.collection.mutable.LinkedList(1,2,3,4,5) //这里的val resultList 是不可变的 但是里面的元素可变, // 使用循环语句,将每个元素的值都乘二 var currentList = resultList while (currentList != Nil ){ currentList.elem = currentList.elem*2 currentList = currentList.next } println("---------") resultList.foreach(x=>print(x+"\t")) println("+++++++++++") currentList.foreach(x=>print(x+"\t")) //为什么它 没有输出?? println("===========") } } object Test0201 extends App { val currentList = scala.collection.mutable.LinkedList(1,2,3,4,5) // 这里改成了 currentList 发现还是什么也没输出 // var currentList = resultList while (currentList != Nil ){ currentList.elem = currentList.elem*2 currentList.next } println("---------") //resultList.foreach(println) println("+++++++++++") currentList.foreach(println) // println("===========") } object Test0202 extends App { val currentList = scala.collection.mutable.LinkedList(1,2,3,4,5) // var currentList = resultList while (currentList != Nil ){ println("---------" + currentList) currentList.next println("---------"+ currentList) //这里发先他变成了死循环 } println("---------") // resultList.foreach(println) println("+++++++++++") currentList.foreach(println) println("===========") } //Nil是一个空List,定义为List[Nothing],所有Nil是所有List[T]的子类 object Test0203 { def main(args: Array[String]): Unit = { val resultList = scala.collection.mutable.LinkedList(1,2,3,4,5) var currentList = resultList while (currentList != Nil ){ //Nil是一个空List println("== " + currentList) currentList.elem = currentList.elem*2 elem代表获取集合中第一个元素 currentList = currentList.next //next表示获取除了第一个元素以外其它的元素 println(currentList) // ------currentList 最后变成了 空的 LinkedList(),所以遍历的时候没有输出 } println("---------") resultList.foreach(x=>print(x+"\t")) println() println("+++++++++++") currentList.foreach(x=>print(x+"\t")) println(currentList) println("===========") } } //== LinkedList(1, 2, 3, 4, 5) //LinkedList(2, 3, 4, 5) //== LinkedList(2, 3, 4, 5) //LinkedList(3, 4, 5) //== LinkedList(3, 4, 5) //LinkedList(4, 5) //== LinkedList(4, 5) //LinkedList(5) //== LinkedList(5) //LinkedList() //--------- //2 4 6 8 10 //+++++++++++ //===========

因为 .next 表示每次获取 除了第一个元素以外的其他元素,所以currentList最后变成了空的LinkedList() ,所以用 foreach 遍历为空 可以用 println(currentList) 发现输出了 LinkedList() ,, 个人觉得和垃圾回收机制无关 currentList 还是存在的 只是变成了 空的集合

最新回复(0)