Saltar al contenido

Agregar un elemento al final de una lista en Scala

Solución:

List(1,2,3) :+ 4

Results in 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, ListBuffer).

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 lo siguiente:

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

o eso:

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

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

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 que se agreguen nuevos elementos.

Finalmente, después de que se hayan realizado todas las operaciones, 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)
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *