如何从Scala中的列表中删除元素?

该列表是不可变的数据结构,因此删除元素很容易实现。一种方法是使用诸如filter,partition,splitAt,take等过滤方法过滤掉元素。

程序:

object MyClass {
    def main(args: Array[String]) {
        var progLang = List("C++", "Java", "Scala", "Python")
        
        println("编程语言: " + progLang)
        
        var newLang = progLang.filter(_<"P")
        
        println("编程语言: " + newLang)
       
    }
}

输出结果

编程语言: List(C++, Java, Scala, Python)
编程语言: List(C++, Java)

修改列表的其他方法是使用ListBuffer,它是可变的,使删除过程变得容易。

我们可以使用以下方法从ListBuffer中删除一个元素

  1. 使用-=运算符

  2. 使用remove()方法

  3. 使用-=运算符(删除另一个集合的元素)

1)使用-=运算符

-=可以从ListBuffer中删除单个或多个元素。

语法:

    ListBuffer -= element(s)

程序:

import scala.collection.mutable.ListBuffer

object MyClass {
    def main(args: Array[String]) {
        var progLang = ListBuffer("C", "C++", "Java", "Scala", "Python", "JavaScript")
        
        println("编程语言: " + progLang)
        
        println("Deleting single element")
        progLang -= "Java"
        println("编程语言: " + progLang)
        
        println("Deleting multiple elements")
        progLang -= ("C", "Python")
        println("编程语言: " + progLang)
    }
}

输出结果

编程语言: ListBuffer(C, C++, Java, Scala, Python, JavaScript)
Deleting single element
编程语言: ListBuffer(C, C++, Scala, Python, JavaScript)
Deleting multiple elements
编程语言: ListBuffer(C++, Scala, JavaScript)

2)使用remove()方法

remove()方法与-=相同,可以删除单个或多个元素。

语法:

    ListBuffer.remove(element)

程序:

import scala.collection.mutable.ListBuffer

object MyClass {
    def main(args: Array[String]) {
        var progLang = ListBuffer("C", "C++", "Java", "Scala", "Python", "JavaScript")
        
        println("编程语言: " + progLang)
        
        println("Deleting single element")
        progLang.remove(0)
        println("编程语言: " + progLang)
        
        println("Deleting multiple elements")
        progLang.remove(3, 2)
        println("编程语言: " + progLang)
    }
}

输出结果

编程语言: ListBuffer(C, C++, Java, Scala, Python, JavaScript)
Deleting single element
编程语言: ListBuffer(C++, Java, Scala, Python, JavaScript)
Deleting multiple elements
编程语言: ListBuffer(C++, Java, Scala)

remove()方法适用于ListBuffer的索引,并且在删除多个元素时,我们需要启动要删除的索引和数字作为该方法的参数。

3)使用-=运算符

-=删除使用另一个集合指定的元素。

语法:

    ListBuffer --= collection

程序:

import scala.collection.mutable.ListBuffer

object MyClass {
    def main(args: Array[String]) {
        var progLang = ListBuffer("C", "C++", "Java", "Scala", "Python", "JavaScript")
        
        println("编程语言: " + progLang)
        
        println("Deleting elements")
        progLang --= Array("C", "Python")
        println("编程语言 " + progLang)
    }
}

输出结果

编程语言: ListBuffer(C, C++, Java, Scala, Python, JavaScript)
Deleting elements
编程语言 ListBuffer(C++, Java, Scala, JavaScript)