In order for this to work you need to override hashcode and equals on the contents of the list. Contains uses these methods, which by default are based on the memory reference so it will only work for a shallow copy.
solved .contains() on a list of objects [closed]