bestsource

스칼라에서 목록 끝에 요소 추가

bestsource 2023. 5. 24. 22:17
반응형

스칼라에서 목록 끝에 요소 추가

유형 요소를 추가할 수 없습니다.T일람표에.List[T]로 시도했습니다.myList ::= myElement하지만 그것은 이상한 물체를 만들고 접근하는 것처럼 보입니다.myList.last항상 목록에 포함된 첫 번째 요소를 반환합니다.어떻게 하면 이 문제를 해결할 수 있을까요?

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의 목록은 수정되도록 설계되지 않았습니다.사실 스칼라에는 요소를 추가할 수 없습니다. 자바 문자열과 같은 불변의 데이터 구조입니다.Scala에서 "목록에 요소 추가"할 때 실제로 수행하는 작업은 기존 목록에서 목록을 만드는 것입니다. (소스)

이러한 사용 사례에 목록을 사용하는 대신 또는 를 사용하는 것이 좋습니다.이러한 데이터 구조는 새 요소를 추가하도록 설계되었습니다.

마지막으로 모든 작업이 완료된 후 버퍼를 목록으로 변환할 수 있습니다.다음 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)

이는 정답 중 하나와 비슷하지만 다른 방식입니다.

scala> val x = List(1,2,3)
x: List[Int] = List(1, 2, 3)

scala> val y = x ::: 4 :: Nil
y: List[Int] = List(1, 2, 3, 4)

두 개의 목록을 추가하거나 추가하거나 list&array를 추가할 수 있습니다.
추가:

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

목록은 Scala에서 변경할 수 없습니다.

가변 목록을 사용할 수 있습니다.

var l = scala.collection.mutable.MutableList(1,2,3)
l += 4 

언급URL : https://stackoverflow.com/questions/7794063/appending-an-element-to-the-end-of-a-list-in-scala

반응형