Я запускаю функцию динамического программирования, где я переношу список строк в течение всего процесса.Scala, какая структура данных наиболее эффективна для моих предполагаемых операций?
Со временем я добавляю новые строки в конец этого списка, и иногда я могу удалить последний элемент. Сейчас я использую mutable ListBuffer, делая +=
для добавлений и .trimEnd(1)
для удаления.
После выполнения моей процедуры динамического программирования мне необходимо эффективно иметь доступ к каждому элементу этого списка/последовательности/etc и по порядку (первый элемент, который я вставил, будет первым, а последний элемент, который я вставил, будет быть последним доступным).
Я также попробовал ArrayBuffers, но они оба кажутся слишком медленными. Я пытаюсь ускорить этот процесс, и мне интересно, использую ли я структуру данных, которая имеет операции O (n), когда может быть что-то, у которого есть O (1) операторы времени для того, что мне нужно.
Есть ли встроенный тип данных для этого? – user5019849
scala.collection.immutable.List - http://www.scala-lang.org/api/2.11.5/index.html#scala.collection.immutable.List –
В зависимости от того, с чем связана ваша пост-обработка, вы должны посмотреть на foldLeft, если он может быть сформулирован как шаг накопления, он предоставит вам заказ, который вы хотите довольно естественно. –