Для «запаса» (стандартная библиотека) List
val l1 = List(1, 2, 3)
l1: List[Int] = List(1, 2, 3)
val l2 = l1 :+ 4
l2: List[Int] = List(1, 2, 3, 4)
val l3 = l2 ++ List(5, 6, 7, 8)
l3: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8)
Однако, вы должны тщательно рассмотреть последствия пытаются добавить новые элементы в конце списка против клеток, таких как List
(и ваш «пользовательский» список), так как это очень неэффективно. Часто, когда вам нужен этот результат, вы пишете рекурсивный алгоритм, который дает список, который вы хотите в обратном порядке («потому что вы делаете эффективную вещь и добавляете вновь созданные элементы в голову накопительного списка), а затем, когда все это делается, отмените назад, чтобы получить правильную последовательность.
Для вашего списка «Custom»
Для элементарного списка против клеток ни с одним из тонкостей в Scala List
, можно построить только с фронта. В этом случае создайте список, добавив новые элементы на передний план (единственное, что вы можете сделать), затем напишите алгоритм reverse
, чтобы получить список в нужной последовательности.
Добавление
Я предполагаю, что я на самом деле не ответить на этот вопрос. Если ваша цель/требование состоит в том, чтобы добавить новый элемент в конец, то вам нужно создать новый список, содержащий только этот элемент, и один за другим (рекурсивно) добавить каждый элемент существующего списка от последнего к первому! В идеале вы сделали бы это с помощью рекурсивной реализации. Если вы не понимаете неэффективность добавления перед тем, как начать, вы это сделаете.