복붙노트

[SCALA] 스칼라리스트의 말미에 부가 된 요소

SCALA

스칼라리스트의 말미에 부가 된 요소

그것은 바보 같은 질문처럼 들리지만, 인터넷에있는 모든 나는 쓰레기였다. 나는 단순히 목록 목록 [T]로 형 T의 요소를 추가 할 수 없습니다. 나는 myList에 :: = myElement으로 시도했지만 이상한 개체를 만들고 myList.last에 접근 항상 목록 안에 넣어 첫 번째 요소를 반환 보인다.

해결법

  1. ==============================

    1.

    List(1,2,3) :+ 4
    
    Results in List[Int] = List(1, 2, 3, 4)
    

    참고이 동작은 O (N)의 복잡도를 가지고있다. 자주이 작업을해야하는 경우, 또는 긴 목록을 위해, (예를 들어, ListBuffer) 다른 데이터 형식을 사용하는 것이 좋습니다.

  2. ==============================

    2.즉, 당신은 (적어도 불변의 목록)을하지 말아야의 때문이다. 당신이 정말 정말 데이터 구조의 끝과이 데이터 구조 정말 목록을 할 필요가이 목록에 요소를 추가해야 할 경우 정말 정말이 불변 다음이를 eiher 할 수합니다 :

    즉, 당신은 (적어도 불변의 목록)을하지 말아야의 때문이다. 당신이 정말 정말 데이터 구조의 끝과이 데이터 구조 정말 목록을 할 필요가이 목록에 요소를 추가해야 할 경우 정말 정말이 불변 다음이를 eiher 할 수합니다 :

    (4 :: List(1,2,3).reverse).reverse
    

    또는:

    List(1,2,3) ::: List(4)
    
  3. ==============================

    3.스칼라의 목록을 수정할 수 있도록 설계되어 있지 않습니다. 사실, 당신은 스칼라 목록에 요소를 추가 할 수 없습니다; 그것은 자바 문자열과 같은 불변의 데이터 구조입니다. 당신은 스칼라에서 "목록에 요소를 추가 할 때"당신이 실제로 무엇을 기존 목록에서 새 목록을 만드는 것입니다. (출처)

    스칼라의 목록을 수정할 수 있도록 설계되어 있지 않습니다. 사실, 당신은 스칼라 목록에 요소를 추가 할 수 없습니다; 그것은 자바 문자열과 같은 불변의 데이터 구조입니다. 당신은 스칼라에서 "목록에 요소를 추가 할 때"당신이 실제로 무엇을 기존 목록에서 새 목록을 만드는 것입니다. (출처)

    대신 같은 사용 사례에 대한 목록을 사용하여, 나는 중 하나를 사용 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)
    
  4. ==============================

    4.이 답변 중 하나지만 다른 방법으로 유사하다 :

    이 답변 중 하나지만 다른 방법으로 유사하다 :

    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)
    
  5. ==============================

    5.우리는 추가 또는 두 개의 목록 또는 목록 및 배열을 붙일 수 있습니다 추가합니다

    우리는 추가 또는 두 개의 목록 또는 목록 및 배열을 붙일 수 있습니다 추가합니다

    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
    
  6. from https://stackoverflow.com/questions/7794063/appending-an-element-to-the-end-of-a-list-in-scala by cc-by-sa and MIT license