Scala中的List

29 阅读3分钟

(一)List的定义和介绍

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

List 创建格式:

不可变List:

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

可变 List:ListBuffer

import scala.collection.mutable.ListBuffer

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

package list

/**
 *list:有序, 可重复
 *1. 不可变List
 *2. 可变List (在每个scala文件中, 默认可以直接使用)
 */

object list01 {
  def main(args: Array[String]): Unit = {
    // 1. 不可变 List("湖北省", "浙江省")
    val list1 = List("湖北省", "浙江省")
    println(list1)
    // 2. 可变List
    val list2 = scala.collection.mutable.ListBuffer("湖北省", "浙江省")
    list2 += "北京市"
    println(list2)
  }
}

(二)可变List的常用方法

1. 添加元素

如果我们要给刚才创建的存储名山的可变 List 中添加一个新的名山,怎么 做呢?

对于可变 List,我们可以使用+=操作符或者append方法来添加元素。

添加元素到可变 List 的格式 (+= 操作符):

listBuffer += element

添加元素到可变 List 的格式 (append 方法):

listBuffer.append(element)

编码演示

l1 += 4          // 在尾部添加, 或者append

l1.prepend(-1)   // 在头部添加`

l1.insert(2,150) // 在指定位置添加。 把2这个位置上的元素改成150,其他向后边移动
package list

/**
 list: 有序, 链表
 * 1. 可变List
 * 2. 不可变的List (在每个scala文件中, 默认可以直接使用)
 *
 * 常见操作
 * 1. 添加元素
 * 1.1 在尾部添加
 * 1.2 在头部添加
 * 1.3 在指定位置添加
 */
object list02 {
  def main(args: Array[String]): Unit = {
    // 可变列表
    val list2 = scala.collection.mutable.ListBuffer("湖北省", "浙江省")
    // 1.1 在列表元素的尾部添加。
    list2 += "北京市"
    // 1.2 在头部添加
    list2.prepend("潜江")
    // 1.3 在指定位置添加。insert在指定的下标的位置添加元素
    list2.insert(1, "湖南")
    println(list2)
  }
}

2. 删除元素

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

l1 -= 150 // 删除指定的元素

l1.remove(0) // 删除指定位置上的元素

3. 元素是否存在

如果我们想知道刚才创建的名山列表中是否包含某个特定的名山,在 List 中怎么操作呢?

我们可以使用contains方法来查询 List 中是否包含某个元素。

查询 List 元素的格式(contains 方法):

val isContained: Boolean = listName.contains(element)

4. 合并列表

如果我们有两份列表,如何进行合并操作而得到一个新的列表呢?

我们可以使用 ++ 方法来合并。

1. List的遍历****

[问] 如果我们想查看所有的名山,也就是遍历 List,怎么做呢?
[讲] 我们可以使用for循环或者foreach方法来遍历 List。

使用 for 循环遍历 List 的格式:

for (element <- listName) {
  // 操作,如打印 element

}

  

使用 foreach 方法遍历 List 的格式:

listName.foreach { element =>
  // 操作,如打印 element

}

总结所有:

package list

object list03 {
  def main(args: Array[String]): Unit = {
    // 可变列表
    val list2 = scala.collection.mutable.ListBuffer("湖北省", "浙江省")
    // 1.1 在列表元素的尾部添加。
    list2 += "北京市"
    // 1.2 在头部添加
    list2.prepend("潜江")

    // 1.3 在指定位置添加。insert在指定的下标的位置添加元素
    list2.insert(1, "湖南")

    // 2 删除
    list2 -= "湖北省"

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

    // 4. 合并列表,列表中允许重复的元素存在
    val list3 = scala.collection.mutable.ListBuffer("湖北省", "浙江省")
    val list4 = scala.collection.mutable.ListBuffer("湖北省", "浙江省")
    val list5 = list3 ++ list4

    // 5. 遍历 for
    for(ele <- list2) {
      println(ele)
    }
    list2.foreach(ele => {
      println(ele)
    })
  }
}