对比
List 列表
子公司 ->子公司 -> 子公司
特点:有序的
Array 数组
物理空间上是连续的
有序的
例
不可变列表
Scala
object Test_List {
def main(args: Array[String]): Unit = {
//1.建立,不可变列表
val l1 = List("北京","上海")
//2.通过下标来访问 : 下标从0开始
println(l1(1))
//3.不能修改
l1(1) = "杭州"
println(l1)
}
}
可变列表
Scala
object Test_List {
def main(args: Array[String]): Unit = {
//1.建立,可变列表
val l1 = ListBuffer("北京","上海")
//2.通过下标来访问:下标从0开始
println(l1(1))
//3。能修改
l1(1) = "杭州"
println(l1)
//4.添加
l1 += "广州" //在尾部添加
l1.prepend("武汉") //在头部添加
//l1.insert(位置,值)
l1.insert(2, "上海")
println(l1)
//5.删除
l1 -= "深圳" //删除指定元素
l1.remove(0) //删除指定位置的元素,0就是第一个元素
println(l1)
//6.合并
val l2 = ListBuffer(1, 2, 3)
val l3 = ListBuffer(4, 5)
val l4 = l2 ++ l3 //合并两个List的元素到一个新的List中
println(l4)
//7.查找,判断元素是否存在
val el = 30
val rs = l4.contains(el)
println(s"元素:$el")
//8.遍历
for(el <- l1){
println(s"元素是:$el")
}
println("_"*20)
l1.foreach(println)
println(l4)
}
}
【课后小答】
1.在 Scala中,关于不可变 List 和可变 List 的说法错误的是?( B )
A. 可交的List 叫 ListBuffer; B. List的元素还是可以通过下标来修改的;
C. 使用ListBuffer 需要提前导入对于的包; D.默认的List 是不可变的
2.以下哪个方法可以用于向可变 List 的头部添加元素? ( A )
A. prepend B. insert C. pended D. prepended
3.使用 ::: 方法的作用是? ( B )
A.添加元素到可变列表; B.合并两个列表;
C.添加元素到不可变列表; D.合并两个列表中的元素,并消除重复的。
4.对于不可变 List,如果要添加新元素,会怎样? ( A )
A.直接添加; B. 抛出异常;
C.创建一个新的 List; D.编译错误
5.遍历 List 可以使用哪些方法? ( B )
A. for 循环和 while 循环; B. for 循环和 foreach 方法;
C. if 语句和 foreach 方法; D. switch 语句和 for 循环。
【实训】
1.创建图书信息类,包含三个属性:书名,作者,价格;
2.创建6本图书对象并添加到可变 List的尾部;
3.创建1本图书对象并添加到可变 List的头部;
4.创建1本图书对象并添加到可变 List的第3个位置;
5.根据图书名称查询是否在列表中(通过遍历列表对比名称);
6.从列表中删除第4本书;
7.对于图书按价格从高到低排序;
8.遍历图书列表,并打印每本书的详细信息;
9.展示全部的总的金额
Scala
import scala.collection.mutable.ListBuffer
//1.创建图书信息类,包含三个属性:书名,作者,价格
class Book(var bookName: String, var author: String, var price: Double) {
override def toString: String = s"书名:$bookName,作者:$author,价格:$price"
}
object 图书馆List{
def main(args: Array[String]): Unit = {
var bookList = ListBuffer[Book]()
//2.创建6本图书对象并添加到可变 List的尾部
bookList += new Book("百年孤独", "加西亚・马尔克斯", 50)
bookList += new Book("活着", "余华", 80)
bookList += new Book("哈利・波特", "J.K. 罗琳", 50)
bookList += new Book("三体", "刘慈欣", 80)
bookList += new Book("平凡的世界", "路遥", 70)
bookList += new Book("追风筝的人", "卡勒德・胡赛尼", 60)
println(bookList)
//3.创建1本图书对象并添加到可变 List的头部
bookList.prepend(new Book("呐喊", "鲁迅", 32))
println(bookList)
//4.创建1本图书对象并添加到可变 List的第3个位置
bookList.insert(2, new Book("老人与海", "欧内斯特・海明威", 78))
println(bookList)
//5.根据图书名查询是否在列表中(通过遍历列表对比名称)
def isBookInList(bookName: String): Boolean = {
for (book <- bookList) {
if (book.bookName == bookName) return true
}
false
}
println(s"《百年孤独》在列表中吗? ${isBookInList("百年孤独")}")
//6.从列表中删除第四本书
bookList.remove(3)
println(bookList)
//7.对图书按价格从高到低排序
val sortedList = bookList.sortBy(-_.price)
println("按价格从高到低排序后:")
println(sortedList)
//8.遍历图书列表,并打印每本书的详细信息
println("每本书的详细信息:")
for (book <- bookList) {
println(s"书名:${book.bookName},作者:${book.author},价格:${book.price}")
}
//9.展示全部总金额
val totalPrice = bookList.map(_.price).sum
println(s"全部总金额为:$totalPrice")
}
}