Scala中List的实训练习

65 阅读1分钟

写scala程序,完成如下功能。

1.创建图书信息类,包含三个属性:书名,作者,价格

2.创建6本图书对象并添加到可变 List的尾部

3.创建1本图书对象并添加到可变 List的头部

4.创建1本图书对象并添加到可变 List的第3个位置

5.根据图书名称查询是否在列表中(通过遍历列表对比名称)

6.从列表中删除第4本书

7.对于图书按价格从高到低排序。

8.遍历图书列表,并打印每本书的详细信息9.展示全部的总的金额

运行代码

package list

/**
 * 写scala程序,完成如下功能。
 * 1.创建图书信息类,包含三个属性:书名,作者,价格
 * 2.创建6本图书对象并添加到可变 List的尾部
 * 3.创建1本图书对象并添加到可变 List的头部
 * 4.创建1本图书对象并添加到可变 List的第3个位置
 * 5.根据图书名称查询是否在列表中(通过遍历列表对比名称)
 * 6.从列表中删除第4本书
 * 7.对于图书按价格从高到低排序。
 * 8.遍历图书列表,并打印每本书的详细信息
 * 9.展示全部的总的金额
 */
object list03 {
  def main(args: Array[String]): Unit = {
    import scala.collection.mutable.ListBuffer

    // 1. 创建图书信息类
    class Book(val name: String, val author: String, val price: Double) {
      // 重写toString方法,方便打印图书信息
      override def toString: String = s"书名:$name,作者:$author,价格:$price 元"
    }
    // 2. 创建可变List并添加6本图书到尾部
        val bookList = new ListBuffer[Book]()
        bookList += new Book("《Scala编程》", "Martin Odersky", 89.0)
        bookList += new Book("《Java核心技术》", "Cay Horstmann", 108.0)
        bookList += new Book("《Python编程:从入门到实践》", "Eric Matthes", 79.0)
        bookList += new Book("《数据结构与算法分析》", "Mark Allen Weiss", 98.0)
        bookList += new Book("《深入理解计算机系统》", "Randal E. Bryant", 128.0)
        bookList += new Book("《机器学习实战》", "Peter Harrington", 69.0)

        // 3. 添加1本图书到头部
        bookList.prepend(new Book("《算法导论》", "Thomas H. Cormen", 139.0))

        // 4. 添加1本图书到第3个位置(索引为2)
        bookList.insert(2, new Book("《设计模式:可复用面向对象软件的基础》", "Erich Gamma", 78.0))

        // 5. 根据图书名称查询是否存在
        def searchBook(bookName: String): Boolean = {
          for (book <- bookList) {
            if (book.name == bookName) return true
          }
          false
        }
        val targetBook = "《Scala编程》"
        println(s"查询图书'$targetBook'是否存在:${searchBook(targetBook)}")

        // 6. 删除第4本书(索引为3)
        bookList.remove(3)

        // 7. 按价格从高到低排序
        val sortedBooks = bookList.sortBy(_.price)(Ordering[Double].reverse)

        // 8. 遍历并打印排序后的图书信息
        println("\n按价格从高到低排序后的图书列表:")
        sortedBooks.foreach(book => println(book))

        // 9. 计算并展示总金额
        val totalPrice = sortedBooks.map(_.price).sum
        println(s"\n所有图书的总金额:$totalPrice 元")
      }
}

运行结果

image.png