Это звучит как глупый вопрос, но все, что я нашел в интернете, было мусором.
Я просто не могу добавить элемент типа T
в список List[T]
.
Я попытался с myList ::= myElement
, но, похоже, он создает странный объект, и доступ к myList.last
всегда возвращает первый элемент, который был помещен в список.
Добавление элемента в конец списка в Scala
Ответ 1
List(1,2,3) :+ 4
//--> List[Int] = List(1, 2, 3, 4)
Обратите внимание, что эта операция имеет сложность O (n). Если вам нужна эта операция часто или для длинных списков, подумайте об использовании другого типа данных (например, ListBuffer).
Ответ 2
Это потому, что вы не должны этого делать (по крайней мере, с неизменным списком). Если вам действительно нужно добавить элемент в конец структуры данных, и эта структура данных действительно действительно должна быть списком, и этот список действительно действительно должен быть неизменным, а затем выполните следующее:
(4 :: List(1,2,3).reverse).reverse
или что:
List(1,2,3) ::: List(4)
Ответ 3
Списки в Scala не предназначены для модификации. На самом деле вы не можете добавлять элементы в Scala List
; это неизменяемая структура данных, как Java String.
То, что вы на самом деле делаете, когда вы добавляете элемент в список в Scala, - это создать новый список из существующего списка. (Источник)
Вместо использования списков для таких вариантов использования я предлагаю либо использовать 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
Мы можем добавить или добавить два списка или список & массив
Добавить:
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
Ответ 5
Это похоже на один из ответов, но по-разному:
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)