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 还是存在的 只是变成了 空的集合