В частности, приветствуется неизменный List с операцией cons.
Существует также проект «Структуры данных Clojure, модифицированные для использования вне Clojure» по адресу: https://github.com/krukow/clj-ds
Покопался немного дольше. Эта библиотека, вероятно, ближе всего: http://functionaljava.googlecode.com/svn/artifacts/2.22/javadoc/index.html. Я полагаю, что можно было бы использовать классы коллекций Clojure напрямую, но я не уверен, будет ли это так естественно (И мне не обязательно «транзакционное» поведение.)
Я написал несколько постоянных структур данных в Java.Мой "PersistentList" довольно близок к тому, что вы хотите.
http://code.google.com/p/mikeralib/source/browse/trunk/Mikera/src/mikera/persistent/PersistentList.java
Я сейчас использую Google Guava . Его пакет коллекций имеет неизменные варианты списков, карт, наборов и других. Код прост в использовании и отличается высоким качеством.
Однако из-за подробностей реализации эффективное использование списка может оказаться невозможным.
В * 1001 опубликовано несколько решений *, содержащих список в Java . И неизменность может быть добавлена с:
List l; ... l = Collections.unmodifiableList(l);