scala中的List

31 阅读3分钟

(一)、List的定义和介绍

List 是一种有序的数据结构,它是一种链表结构。

List 创建格式

不可变List:

val 列表名称 = List(element1, element2,...)

可变List:ListBuffer

import scala.collection.mutable.ListBuffer;

val 列表名称 = ListBuffer[元素类型](element1, element2,...);

object list01 {
  def main(args: Array[String]): Unit = {
    //不可变的列表
    val list1 = List("湖北","湖南","广东")
    //  list1 += "北京" 错误,不可变列表,不能直接+=
    println(list1)

    //可变的列表
    val list2 = scala.collection.mutable.ListBuffer("湖北","湖南","广东")
    //可变列表,可以 +=
    list2 += "北京"
  }

}

(二)、可变List的常用方法

1.添加元素

对于可变 List,我们可以使用+=操作符或者append方法来添加元素。 添加元素到可变 List 的格式 (+= 操作符): listBuffer += element
添加元素到可变 List 的格式 (append 方法): listBuffer.append(element)

object list02 {
  def main(args: Array[String]): Unit = {

    val list1 = scala.collection.mutable.ListBuffer("湖北")

    //1.1添加,在尾部添加
    list1 +="南昌"
    println(list1)//ListBuffer(湖北, 南昌)
    //1.2添加,在头部添加
    list1.prepend("潜江")//潜江,湖北,南昌
    //1.3添加,在指定位置插入
    list1.insert(1,"九江")//潜江, 九江, 湖北, 南昌
    println(list1)

  }

}

2.删除元素

删除的方法有两种:删除元素,删除某个位置上的元素。

    //2.1删除,删除指定的元素,只删除找到的这一个
    list1 -= "潜江"
    println(list1)
    //2.2删除某个下标上的元素
    list1.remove(0)
    println(list1)

3.元素是否存在

//3.判断是否存在
if(list1.contains("潜江")){
  println("潜江在列表中")
}else{
  println("潜江不在列表中")
}

4.合并列表

//4.合并
val list2 = scala.collection.mutable.ListBuffer(1,2,3)
val list3 = scala.collection.mutable.ListBuffer(4,5,6)
val list4 = list2 ++ list3
val list5 = list2.concat(list3)
println(list4)
println(list5)

5.List的遍历

//5.遍历 list1 for,foreach方法
list1.foreach(ele =>{
  println(ele)
})
for (ele <- list1){
  println(ele)
}

(三)、实训内容

步骤任务:

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

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

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

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

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

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

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

8.遍历图书列表,并打印每本书的详细信息

9.展示全部的总的金额

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

    val book1 = new Book("西游记","吴承恩",50.2)
    bookList += book1
    val book2 = new Book("三国演义","罗贯中",54.2)
    bookList += book2
    //3.
    val book3 = new Book("凡人修仙传","忘语",30)
    bookList.prepend(book3)
    //4.
    bookList.insert(2,new Book("平凡的世界","路遥",50))
    //7.
    val newBookList = bookList.sortWith((a:Book,b:Book) => {
      a.price > b.price
    })
    //8.
    newBookList.foreach(book =>{
      println(s"书名:${book.bookName},作者:${book.author} 价格:${book.price}")
    })
  }
}