zoukankan      html  css  js  c++  java
  • How to add elements to a List in Scala

    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.

  • 相关阅读:
    步步为营 .NET 设计模式学习笔记 十三、Bridge (桥接模式)
    步步为营 .NET 设计模式学习笔记 十五、Composite(组合模式)
    Web服务器及客户端软件推荐
    步步为营 .NET 代码重构学习笔记 二、提炼方法(Extract Method)
    步步为营 .NET 代码重构学习笔记 十
    步步为营 .NET 设计模式学习笔记 十、Builder(建造者模式)
    步步为营 .NET 代码重构学习笔记 八
    新浪微博的文字滚动更新效果
    几段javascript实现一个打字游戏效果
    jquery实现简单的手风琴效果
  • 原文地址:https://www.cnblogs.com/seaspring/p/5645202.html
Copyright © 2011-2022 走看看