I am not sure what you are looking for but if you don't intend to change the original arrayList or rather want to have a copy of the original arrayList wouldn't it be better to just clone the arrayList, that way you have reference to the original list, prototype pattern. But if you are planning on updating the original arrayList, what is the point of making it private and then having bunch of setters and getters to update the lists failing to utilize the fact that arrayLists are mutable? The third scenario, which might be the scenario you were getting at - you only care for the data in the arrayList and dont intend to change its values. For instance, an arrayList that returns a list of completed orders to be displayed in the GUI Table, then if this is the case then I think the current design is just fine. Unless am missing something.