Код: Выделить всё
[1, 2, 3, 4, 5, 6]
Поскольку операции чтения потенциально долговечны, я бы хотел использовать структуру данных, в которой я мог бы безопасно перебирать логическую копию последовательности для каждой попытки чтения, тем самым предотвращая кэширование. читать, не задерживая любые последующие записи. Однако использование стандартного Java ArrayList или LinkedList требует больших затрат на создание полной копии.
Мой вопрос: есть ли какие-либо сторонние Библиотеки Java, которые предоставляют неизменяемые структуры данных, аналогичные Scala, при этом попытки изменить структуру данных возвращают новую неизменяемую копию (которая фактически основана на исходной структуре данных и, следовательно, операция копирования выполняется очень быстро). ? Очевидно, что структура данных не может соответствовать API коллекций Java, поскольку такие операции, как add(T), должны будут возвращать новую коллекцию (а не void).
(Пожалуйста, не комментируйте/ответьте, ссылаясь на это как на преждевременную оптимизацию.)
Заранее спасибо.
Примечание
ImmutableList Guava почти достигает того, что мне нужно: он позволяет вам вызывать copyOf, где копия обычно ссылается на оригинал (избегая фактического копирования). К сожалению, вы не можете пойти другим путем и добавить элемент в список и получить копию, содержащую новый элемент.
Подробнее здесь: https://stackoverflow.com/questions/661 ... table-list