当前位置: 首页 > article >正文

Scala学习记录,List

List是一个不可变(immutable)的序列。特点:数据是有序的

前面学习的Set,Map数据是无序的;Array是有序的,Array数组物理空间上是连续的

List可变不可变:

list中不可变的列表是不能修改

list可变列表是可以修改的,切记:前面要导包:

import scala.collection.mutable.ListBuffer


List常见操作

不可变列表常见操作:

可变列表常见操作:
package Scala_CSDN
import scala.collection.mutable.ListBuffer
//list:有序的链表
//list分为可变的,不可变的(默认不可变)
object List1 {
 def main(args: Array[String]): Unit = {
      //1.建立,可变列表
      val l1 = ListBuffer("北京","上海")

      //2.通过下标来访问:下标从0开始
      println(l1(1))

      //3.能修改
      l1(1) = "杭州"
      println(l1)

      //4.添加
      l1 += "广州" //在尾部添加
      println(l1)
      l1.prepend("武汉") //在头部添加
      println(l1)
      //l1.insert(位置,值)
      l1.insert(2,"天津") //在第2个内容后添加
      println(l1)

      //5.删除
      l1 -= "广州" //删除指定元素
      println(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中

      //7.查找,判断元素是否存在
      val el = 3
      val rs = l4.contains(el)
      println(s"元素:$el 是否存在 ? $rs")

      //8.遍历 for foreach
      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 循环。

List实训内容:

1.创建图书信息类,包含三个属性:书名,作者,价格;
2.创建6本图书对象并添加到可变 List的尾部;
3.创建1本图书对象并添加到可变 List的头部;
4.创建1本图书对象并添加到可变 List的第3个位置;
5.根据图书名称查询是否在列表中(通过遍历列表对比名称);
6.从列表中删除第4本书;
7.对于图书按价格从高到低排序;
8.遍历图书列表,并打印每本书的详细信息;
9.展示全部的总的金额

package Scala_CSDN
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")
  }
}

 运行结果如下:

"D:\Program Files\Java\jdk-10.0.1\bin\java.exe" "-javaagent:E:\新建文件夹\IntelliJ IDEA Community Edition 2023.3.1\lib\idea_rt.jar=60201:E:\新建文件夹\IntelliJ IDEA Community Edition 2023.3.1\bin" -Dfile.encoding=UTF-8 -classpath "E:\scala\scala\out\production\scala;C:\Program Files (x86)\scala\lib\scala-library.jar;C:\Program Files (x86)\scala\lib\scala-parser-combinators_2.12-1.0.7.jar;C:\Program Files (x86)\scala\lib\scala-reflect.jar;C:\Program Files (x86)\scala\lib\scala-swing_2.12-2.0.3.jar;C:\Program Files (x86)\scala\lib\scala-xml_2.12-1.0.6.jar" Scala_CSDN.图书馆List
ListBuffer(书名:百年孤独,作者:加西亚・马尔克斯,价格:50.0, 书名:活着,作者:余华,价格:80.0, 书名:哈利・波特,作者:J.K. 罗琳,价格:50.0, 书名:三体,作者:刘慈欣,价格:80.0, 书名:平凡的世界,作者:路遥,价格:70.0, 书名:追风筝的人,作者:卡勒德・胡赛尼,价格:60.0)
ListBuffer(书名:呐喊,作者:鲁迅,价格:32.0, 书名:百年孤独,作者:加西亚・马尔克斯,价格:50.0, 书名:活着,作者:余华,价格:80.0, 书名:哈利・波特,作者:J.K. 罗琳,价格:50.0, 书名:三体,作者:刘慈欣,价格:80.0, 书名:平凡的世界,作者:路遥,价格:70.0, 书名:追风筝的人,作者:卡勒德・胡赛尼,价格:60.0)
ListBuffer(书名:呐喊,作者:鲁迅,价格:32.0, 书名:百年孤独,作者:加西亚・马尔克斯,价格:50.0, 书名:老人与海,作者:欧内斯特・海明威,价格:78.0, 书名:活着,作者:余华,价格:80.0, 书名:哈利・波特,作者:J.K. 罗琳,价格:50.0, 书名:三体,作者:刘慈欣,价格:80.0, 书名:平凡的世界,作者:路遥,价格:70.0, 书名:追风筝的人,作者:卡勒德・胡赛尼,价格:60.0)
《百年孤独》在列表中吗? true
ListBuffer(书名:呐喊,作者:鲁迅,价格:32.0, 书名:百年孤独,作者:加西亚・马尔克斯,价格:50.0, 书名:老人与海,作者:欧内斯特・海明威,价格:78.0, 书名:哈利・波特,作者:J.K. 罗琳,价格:50.0, 书名:三体,作者:刘慈欣,价格:80.0, 书名:平凡的世界,作者:路遥,价格:70.0, 书名:追风筝的人,作者:卡勒德・胡赛尼,价格:60.0)
按价格从高到低排序后:
ListBuffer(书名:三体,作者:刘慈欣,价格:80.0, 书名:老人与海,作者:欧内斯特・海明威,价格:78.0, 书名:平凡的世界,作者:路遥,价格:70.0, 书名:追风筝的人,作者:卡勒德・胡赛尼,价格:60.0, 书名:百年孤独,作者:加西亚・马尔克斯,价格:50.0, 书名:哈利・波特,作者:J.K. 罗琳,价格:50.0, 书名:呐喊,作者:鲁迅,价格:32.0)
每本书的详细信息:
书名:呐喊,作者:鲁迅,价格:32.0
书名:百年孤独,作者:加西亚・马尔克斯,价格:50.0
书名:老人与海,作者:欧内斯特・海明威,价格:78.0
书名:哈利・波特,作者:J.K. 罗琳,价格:50.0
书名:三体,作者:刘慈欣,价格:80.0
书名:平凡的世界,作者:路遥,价格:70.0
书名:追风筝的人,作者:卡勒德・胡赛尼,价格:60.0
全部总金额为:420.0

进程已结束,退出代码为 0


http://www.kler.cn/a/384185.html

相关文章:

  • 『Django』初识前后端分离
  • 协程5 --- 栈切换
  • RabbitMQ 七种工作模式介绍
  • Perforce《2024游戏技术现状报告》Part2:游戏引擎、版本控制、IDE及项目管理等多种开发工具的应用分析
  • PostgreSQL技术内幕17:PG分区表
  • Docker配置国内源加速
  • 数据库中的用户管理和权限管理
  • 【Python有哪些应用场景】
  • JavaScript 23种经典设计模式简介
  • 萤石设备视频接入平台EasyCVR多品牌摄像机视频平台海康ehome平台(ISUP)接入EasyCVR不在线如何排查?
  • 青少年编程与数学 02-003 Go语言网络编程 07课题、客户端服务器模型
  • 躺平成长-利用kimi智能编辑助手开发小程序第(10)天
  • react-native:解决使用webView后部分场景在安卓10崩溃闪退问题
  • python-pyside2使用中遇到的 问题整理
  • 杭州网世:智慧医疗数据存储难题?网世科技双活方案来破解
  • 西门子KTP系列HMI用户自定义弹窗-多弹窗共用
  • 《深度学习》——深度学习基础知识(全连接神经网络)
  • 【Vue 全家桶】7、Vue UI组件库(更新中)
  • 如何利用探商宝精准营销,抓住行业机遇——以AI技术与大数据推动企业信息精准筛选
  • 《现代工业经济和信息化》是什么级别的期刊?是正规期刊吗?能评职称吗?
  • WebStorm技巧
  • 选择排序js
  • 《重学Java设计模式》之 单例模式
  • Android Studio加载旧的安卓工程项目报错处理
  • 在内蒙考驾照需要注意什么呢?
  • springmvc 工作原理