recorrer lista introduccion funciones ejemplos codigos arrays scala

arrays - introduccion - Anexar un elemento al final de una lista en Scala



scala ejemplos (5)

Eso es porque no deberías hacerlo (al menos con una lista inmutable). Si realmente necesita agregar un elemento al final de una estructura de datos y esta estructura de datos realmente necesita ser una lista y esta lista realmente tiene que ser inmutable, entonces haga esto:

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

o eso:

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

Parece una pregunta estúpida, pero todo lo que encontré en internet fue basura. Simplemente no puedo agregar un elemento de tipo T a una List[T] . Intenté con myList ::= myElement pero parece que crea un objeto extraño y el acceso a myList.last siempre devuelve el primer elemento que se puso dentro de la lista.


Esto es similar a una de las respuestas pero de diferente manera:

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)


Las listas en Scala no están diseñadas para ser modificadas. De hecho, no puede agregar elementos a una List Scala; es una estructura de datos inmutable , como Java String. Lo que realmente hace cuando "agrega un elemento a una lista" en Scala es crear una nueva lista a partir de una lista existente . (Source)

En lugar de usar listas para tales casos de uso, sugiero usar un ArrayBuffer o un ListBuffer . Esas estructuras de datos están diseñadas para agregar nuevos elementos.

Finalmente, después de que todas sus operaciones hayan terminado, el búfer se puede convertir en una lista. Vea el siguiente ejemplo de 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)


Podemos agregar o anexar dos listas o lista y matriz
Adjuntar:

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

Precedente:

var l = List[Int]() for(x<-ar) { l=x::l } //prepending l.foreach(println) Result:6 5 4 1 2 3


List(1,2,3) :+ 4 //--> List[Int] = List(1, 2, 3, 4)

Tenga en cuenta que esta operación tiene una complejidad de O (n). Si necesita esta operación con frecuencia o para listas largas, considere usar otro tipo de datos (por ejemplo, un ListBuffer).