java - The copy constructor creates dependent copy -


i implemented copy constructor described here. still problem when update route_copy, same update applied route. so, don't understand wrong in code?

public class route implements comparable<route> {     private list<site> sites;      public route()     {         sites = new arraylist<site>();     }      public route(list<site> sites)     {         this.sites = sites;     }      /**      * copy constructor      */     public route(route r) {         this(r.sites);     }      public void deletesite(site s) {         this.sites.remove(s);     } }  public processdata(route route) {   route route_copy = new route(route);   site s = selectsite(route_copy);   route_copy.deletesite(s); // !!! 'route' not contain  element 's' } 

in copy constructor, doing shallow copy, while need deep copy:

public route(route r) {     this(r.sites); } 

here, still copying reference of list, still points same arraylist. should modify create copy of list too. possibly, need create copy of elements inside arraylist so:

public route(route r) {     list<site> newsites = new arraylist<site>();      (site obj: r.sites) {         // add copy of obj newsites         // need yet copy constructor in 'site' class.     }      this.sites = newsites; } 

check post - shallow copy vs deep copy.


Comments

Popular posts from this blog

php - Calling a template part from a post -

Firefox SVG shape not printing when it has stroke -

How to mention the localhost in android -