pointers - java: data element change affects "unrelated" data structure -
i have problem retrieve , element list (list1), , modify 1 of parameters in element , add list (list2). when final item in list1, modify parameters of elements in list2.
this function called once per generation, not until 8th generation when start see happen. has affect anywhere 2 16 elements in list2.
any ideas screw might be? here's block of code wrote illustrate problem. problem occurs in section check count==0.
public void samplecode (list list) { list differentlist = new arraylist(); individual element; individual differentelement; int = 0; int count = 0; for(i = 0; < list.size(); i++) { element = (individual) list.get(i) ; // checking see if meets criteria // sorta pseudo code if(probability == true) { element.setdomutation(true); count++; } //always add element differentlist //even if no changes made element differentlist.add(i,element); } //need make sure 1 elements has mutation=true; if(count == 0) { differentelement = (individual) list.get((list.size()-1)); //setting element field changes contents of //different list. differentelement.setdomutation(true); differentlist.set((list.size()-1), differentelement); } }
in java, variable doesn't hold object. holds object reference (i.e. pointer object). getting object fom list , putting in list doesn't make copy of object. both lists have pointer same object. so, of course, if modify contents of object, both lists have object modified.
side note: should use parameterized types (i.e. list<individual> rather list), , avoid declaring variables @ beginning of methods in c. declare variable when need it. make code clearer, , reduce scope of variables.
Comments
Post a Comment