如何在Scala中合并列表?

列表是相同数据类型的不可变数据的集合。在Scala中,该列表表示链接数据结构。

在Scala中创建新列表的语法,

    val list_name = List(item1, item2, item3...)

在Scala中合并列表

在Scala中,我们可以将两个列表合并/合并为一个列表。这会将第二个列表附加在第一个列表的末尾。

在可变列表的情况下,您必须使用第三个变量来存储合并列表。否则,我们将不得不使用ListBufferClass(mutable lists)将结果存储在同一变量中。

Scala编程语言提供了三种不同的方式来合并Scala中的列表,

  1. 使用++方法

  2. 使用:::方法

  3. 使用concat()方法

使用++方法合并两个列表

++方法用于连接两个列表。它将第二个列表追加到第一个列表的末尾。++方法也可以应用于ListBuffer类,即可变类。

语法:

    val list3 = list1 ++ list2

程序使用++方法合并Scala中的两个不可变列表

object MyClass {
    def main(args: Array[String]) {
        val list1 = List("C", "C++", "Java")
        val list2 = List("Scala", "Python", "C#")
        
        println("list1: " + list1)
        println("list2: " + list2)
        
        println("合并list1和list2 ")
        
        val list3 = list1 ++ list2
        
        println("合并列表: " + list3)
    }
}

输出结果

list1: List(C, C++, Java)
list2: List(Scala, Python, C#)
合并list1和list2 
合并列表: List(C, C++, Java, Scala, Python, C#)

程序使用++方法合并Scala中的两个可变列表(ListBuffer)

import scala.collection.mutable.ListBuffer

object MyClass {
    def main(args: Array[String]) {
        var list1 = ListBuffer("C", "C++", "Java")
        var list2 = ListBuffer("Scala", "Python", "C#")

        println("list1: " + list1)
        println("list2: " + list2)

        println("合并list1和list2 ")

        list2 = list1 ++ list2

        println("合并列表: " + list2)
    }
}

输出结果

list1: ListBuffer(C, C++, Java)
list2: ListBuffer(Scala, Python, C#)
合并list1和list2 
合并列表: ListBuffer(C, C++, Java, Scala, Python, C#)

使用:::方法合并两个列表

:::方法还用于连接Scala中的两个列表。

语法:

    val list3 = list1 + list2

程序使用++方法合并Scala中的两个不可变列表

object MyClass {
    def main(args: Array[String]) {
        val list1 = List("C", "C++", "Java")
        val list2 = List("Scala", "Python", "C#")

        println("list1: " + list1)
        println("list2: " + list2)

        println("合并list1和list2 ")

        val list3 = list1::: list2

        println("合并列表: " + list3)
    }
}

输出结果

list1: List(C, C++, Java)
list2: List(Scala, Python, C#)
合并list1和list2 
合并列表: List(C, C++, Java, Scala, Python, C#)

:::方法不能应用于ListBuffer类。

使用concat()方法合并两个列表

concat()方法是List类,用于连接Scala中的两个列表。

语法:

    val list3 = list.concat(list1, list2)

程序使用concat()方法在Scala中合并两个不可变列表

import scala.collection.mutable.ListBuffer

object MyClass {
    def main(args: Array[String]) {
        var list1 = ListBuffer("C", "C++", "Java")
        var list2 = ListBuffer("Scala", "Python", "C#")

        println("list1: " + list1)
        println("list2: " + list2)

        println("合并list1和list2 ")

        val list3 = List.concat(list1, list2)

        println("合并列表: " + list3)
    }
}

输出结果

list1: ListBuffer(C, C++, Java)
list2: ListBuffer(Scala, Python, C#)
合并list1和list2 
合并列表: List(C, C++, Java, Scala, Python, C#)