• How do I add elements to a Scala List?


    Scala List FAQ: How do I add elements to a Scala List?

    This is actually a trick question, because you can't add elements to a ScalaList; it's an immutable data structure, like a Java String.

    Prepending elements to Scala Lists

    One thing you can do when working with a Scala List is to create a newList from an existing List. This sort of thing is done often in functional programming, and the general approach looks like this:

    scala> val p1 = List("Kim")
    p1: List[String] = List(Kim)
    
    scala> val p2 = "Julia" :: p1
    p2: List[String] = List(Julia, Kim)
    
    scala> val p3 = "Judi" :: p2
    p3: List[String] = List(Judi, Julia, Kim)
    

    Those examples show how to create a series of lists. The initial list namedp1 contains one string, then p2 contains two strings, and finally p3 contains three strings.

    While that approach looks cumbersome in a small example, it makes sense in larger, real-world code. You can see more/better examples of this approach in my tutorial titled, Scala List class examples.

    Use a ListBuffer when you want a "List" you can modify

    If you want to use a Scala sequence that has many characteristics of a Listand is also mutable (you can add and remove elements in it), use theListBuffer class instead, like this:

    import scala.collection.mutable.ListBuffer
    
    var fruits = new ListBuffer[String]()
    fruits += "Apple"
    fruits += "Banana"
    fruits += "Orange"
    

    Then convert it to a List if/when you need to:

    val fruitsList = fruits.toList
    

    Scala REPL example

    Here's what this List and ListBuffer example looks like using the Scala command line (REPL):

    scala> import scala.collection.mutable.ListBuffer
    import scala.collection.mutable.ListBuffer
    
    scala> var fruits = new ListBuffer[String]()
    fruits: scala.collection.mutable.ListBuffer[String] = ListBuffer()
    
    scala> fruits += "Apple"
    res0: scala.collection.mutable.ListBuffer[String] = ListBuffer(Apple)
    
    scala> fruits += "Banana"
    res1: scala.collection.mutable.ListBuffer[String] = ListBuffer(Apple, Banana)
    
    scala> fruits += "Orange"
    res2: scala.collection.mutable.ListBuffer[String] = ListBuffer(Apple, Banana, Orange)
    
    scala> val fruitsList = fruits.toList
    fruitsList: List[String] = List(Apple, Banana, Orange)
    
     

    More functional ways to work with Scala lists

    Depending on your needs, there are other, "more functional" ways to work with Scala lists, and I work through some of those in my Scala List examples. But for my needs today, I just wanted to work with a Scala Listlike I'd work with a Java List (ArrayListLinkedList), and this approach suits me.

  • 相关阅读:
    好久没有上来,发布几个日志类
    这些天很忙,写一个类似防火墙的东西在WINSOCK2 SPI上做DLL,终于把问题解决了,现提供完整C++项目下载
    Flask学习之搭建环境
    年底总结前序
    3月13日的合照一张
    我也是个张三
    读《广州的一场春梦》有感
    四期合照,纪念小杨离开
    深夜的伤感
    随感,未写先累
  • 原文地址:https://www.cnblogs.com/seaspring/p/5645222.html
Copyright © 2020-2023  润新知