I implemented the copy constructor as it is described here. But still the problem is that when I update route_copy, then the same update is applied to route>
route_copy
route>
Your "copy constructor" is not making a copy of the input list. Try something like
public Route(List sites) { this.sites = new ArrayList(sites); }
for your second constructor.