답변:
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)
:+
, 비효율적 인 경우 한 번만 다시 작성합니다.
스칼라의 목록은 수정하도록 설계되지 않았습니다. 실제로 Scala에 요소를 추가 할 수 없습니다 List
. 그것은이다 불변의 데이터 구조 자바 문자열처럼. 스칼라에서 "목록에 요소를 추가"할 때 실제로하는 일은 기존 List에서 새 List 를 만드는 것 입니다. (출처)
이러한 사용 사례에 목록을 사용하는 대신 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)
두 개의 목록을 추가하거나 추가하거나 목록 및 배열을
추가 할 수 있습니다.
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
다시 변환 되어 (JavaString
와 거의 비슷하게StringBuilder
) 생각하지만 그것은 단지 추측 일뿐입니다.