Istnieje wiele different collection types w Scala, każdy z własnym zestawem wspieranych operacji i/lub dobre wyniki.
W Scala, List
jest niezmienną sekwencją przeciw-komórkową, jak w Lisp. Uzyskiwanie elementu last
nie jest dobrze zoptymalizowanym rozwiązaniem (element head
jest szybki). Podobnie, Queue
i Stack
są zoptymalizowane do pobierania elementu i reszty struktury z jednego końca w szczególności. Możesz użyć któregokolwiek z nich, jeśli twoje zamówienie jest odwrócone.
Inaczej Vector
jest dobrym wykonaniem ogólna struktura, która jest szybko zarówno dla head
i last
rozmowy:
val v = Vector(1, 2, 3, 4)
val init :+ last = v // uses pattern matching extractor `:+` to get both init and last
Gdzie last
będzie równowartość operacji pop
i init
jest sekwencja z ostatniego elementu usunięty (możesz również użyć dropRight(1)
zgodnie z sugestią w innych odpowiedziach). Aby pobrać ostatni element, użyj v.last
.
Wystarczy wiedzieć, jak to jest lepiej niż w ubiegłym dzwoni i uzyskać nową listę po wywołaniu dropRight (1)? –
'dropRight (1)' również wykona zadanie (podobnie jak "x.reverse.tail" i różne inne możliwe wywołania). Mniej znaków do wpisania! :) – Shadowlands
w przeciwieństwie do pop x.reverse.tail będzie O (n) –