Java collections are perhaps not as immutable as you would like, even when you apply Collections.immutable()
pure4j provides modified versions of Clojure persistent collections (including generics, for example) and also compile-time immutability checking of your objects, giving you some guarantees that collections cannot change.
Cornelius Mund's project, https://github.com/cornim/ClojureCollections also provides the clojure collections, without the element immutability guarantees, if that is what you need.