Scala-List列表

对比

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")
  }
}
相关推荐
wheninger15 小时前
DDD 聚合 × Agent 命令:那道拒绝 AI 的墙
后端
狂炫冰美式15 小时前
AI 生成 Draw.io,导入飞书/Lark 画板后可编辑
前端·人工智能·后端
于先生吖15 小时前
前后端分离二手商城开发,质检登记、回收回款整套业务源码部署教程
java·开发语言·uni-app
codeejun15 小时前
每日一Go-76(架构篇)|多集群部署 / 容灾 / Failover / Backup / 热迁移
开发语言·架构·golang
战族狼魂15 小时前
从零构建企业级Hermes-Agent:复杂任务拆解、工具协同与安全落地实践
开发语言·人工智能·python
浩风祭月15 小时前
一个开发者的“看门狗”:我把服务器监控从被动告警变成了主动预防
后端·docker
Moment15 小时前
我做了一套前端也能学懂的 AI Agent 系列,从 Prompt 一路讲到多 Agent 😍😍😍
前端·后端·面试
阿里嘎多学长15 小时前
2026-06-08 GitHub 热点项目精选
开发语言·程序员·github·代码托管
程序员晨曦15 小时前
Java 并发修仙传:ThreadLocal 从“闭关修炼”到“走火入魔”的救赎之路
java·开发语言
李可以量化15 小时前
量化之MiniQMT 实战:一键读取通达信自选股并实时监控涨跌幅(附完整可运行代码)
开发语言·python·量化·qmt·ptrade