Re: Returning local objects
Hell no, even in C++ you may do it like that if you use pointers of course - only the variable is local, the object remains if created correctly. The point is that this will work fine as java will keep any object as long as it is referenced somewhere.
Usually you add other lists by using newList.addAll(...) - note however that with that you do not create "New" objects. Every change you do in the old lists will be in the new lists as the objects contained will be the exact same.