I studied Java is pass object reference by value, and in order to make a local copy of an object, I can either do clone() or copy-constructor. I also looked at deep/shallow
It seems by question that you want to make your collection unmodified so you can use Collections.unmodifiableList().
Collections.unmodifiableList()