Programing

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

lottogame 2020. 5. 6. 20:49
반응형

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


어리석은 질문처럼 들리지만 인터넷에서 찾은 것은 쓰레기였습니다. 단순히 type 요소를 Tlist에 추가 할 수 없습니다 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에 요소를 추가 할 수 없습니다 List. 그것은이다 불변의 데이터 구조 자바 문자열처럼. 스칼라에서 "목록에 요소를 추가"할 때 실제로하는 일은 기존 List에서 새 List 를 만드는 것 입니다. (출처)

이러한 사용 사례에 목록을 사용하는 대신 ArrayBuffera 또는 a 를 사용하는 것이 좋습니다 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)

이것은 답변 중 하나와 비슷하지만 다른 방식입니다.

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)

두 개의 목록을 추가하거나 추가하거나 목록 및 배열을
추가 할 수 있습니다.

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

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

반응형