回答:
List(1,2,3) :+ 4
Results in List[Int] = List(1, 2, 3, 4)
この操作はO(n)の複雑さを持つことに注意してください。この操作が頻繁に必要な場合、または長いリストの場合は、別のデータ型(ListBufferなど)の使用を検討してください。
それは、(少なくとも不変のリストでは)やるべきではないからです。本当にデータ構造の最後に要素を追加する必要があり、このデータ構造が本当にリストである必要があり、このリストが本当に不変である必要がある場合は、次のいずれかを実行します。
(4 :: List(1,2,3).reverse).reverse
またはその:
List(1,2,3) ::: List(4)
:+
、効率が悪い場合は、1回しか再構築しません。
Scalaのリストは変更するようには設計されていません。実際、要素をScalaに追加することはできませんList
。これは、Java文字列のような不変のデータ構造です。Scalaで「リストに要素を追加する」ときに実際に行うことは、既存のリストから新しいリストを作成することです。(ソース)
そのようなユースケースにリストを使用する代わりに、ArrayBuffer
またはを使用することをお勧めしますListBuffer
。これらのデータ構造は、新しい要素が追加されるように設計されています。
最後に、すべての操作が完了したら、バッファをリストに変換できます。次の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)
2つのリストまたはlist&array Appendを追加または追加できます
。
var l = List(1,2,3)
l=l:+4
Result : 1 2 3 4
var ar = Array(4,5,6)
for(x<-ar)
{ l=l:+x}
l.foreach(println)
Result:1 2 3 4 5 6
追加:
var l = List[Int]()
for(x<-ar)
{ l=x::l } //prepending
l.foreach(println)
Result:6 5 4 1 2 3
List
に変換されListBuffer
、要素が追加され、ListBuffer
変換されたバック(ほとんどのようにString
してStringBuilder
Javaで)、それはただの推測です。