java 中ArrayList后添加的值自动更新前边添加的值,大神帮忙了,谢谢,只有25分了
出现的问题:arrayA添加的第二个对象自动更新第一个对象的值,arrayC,arrayD同样出现上述问题,更加不理解的事arrayC会更新arrayA,arrayD会更新arrayC,最后他们三个保存的对象具有完全一样的值。
[code=java][package GUI;
import java.util.ArrayList;
import java.util.Iterator;
import userbean.ACDbean;
import userbean.Taskbean;
import database.DataBase;
import database.DefaultDataBase;
public class ShowTable {
/*
* 根据选中的树节点,从数据库中读出信息
*/
private MainInterface mainInterface;/*主界面*/
private String task;/*任务名称*/
private DataBase db=new DefaultDataBase();/*数据库*/
private Taskbean tb;/*task相关信息bean*/
// private ACDbean approach,dm,cri;/*approach,decision makers,criteria*/
private ArrayList<ACDbean> arrayA=new ArrayList<ACDbean>();;
private ArrayList<ACDbean> arrayD=new ArrayList<ACDbean>();
private ArrayList<ACDbean> arrayC=new ArrayList<ACDbean>();
private ArrayList<Integer> arrayList;
public static final String approachTable="approach";
public static final String criteriaTable="criteria";
public static final String dmTable="dm";
public ShowTable(MainInterface mainInterface,String task){
this.task=task;
this.mainInterface=mainInterface;
tb=((DefaultDataBase)db).getTask(task);/*从数据库中获得TASK表*/
initACDT();
initTables();
mainInterface.initShowPane(arrayA,arrayC,arrayD);
db.closeResultSet();
initTaskShow();
}
public void initTaskShow(){
if(tb==null)
return;
mainInterface.seteIdLabel(tb.getTASK_ID());
mainInterface.seteNameLabel(tb.getTASK_NAME());
mainInterface.seteStatusLabel(tb.getTASK_STATUS());
mainInterface.seteTimeLabel(tb.getTASK_TIME());
}
public void initTables(){
}
public void initACDT(){
/*
* 从数据库中依次读出APPROACH,CRITERIA,DECISION MAKERS;
*/
/*从数据库中读出approach,并且写入到arrayList的*/
arrayList=tb.getArray(tb.getTASK_APPROACH());/*得到approach的id*/
Iterator iterator=arrayList.iterator();
while(iterator.hasNext()){
int id=((Integer)iterator.next()).intValue();
ACDbean approach=((DefaultDataBase)db).getACD(id,approachTable);/*返回保存appproach的ACDbean*/
arrayA.add(approach);
db.closeResultSet();
}
db.closeResultSet();
/*从数据库中读出criteria*/
arrayList=tb.getArray(tb.getTASK_CRI());/*得到criteria的id*/
iterator=arrayList.iterator();
while(iterator.hasNext()){
int id=((Integer)iterator.next()).intValue();
ACDbean dm=((DefaultDataBase)db).getACD(id,criteriaTable);/*得到保存criteria的ACDbean*/
arrayD.add(dm);
}
db.closeResultSet();
/*从数据库中读出decision makers*/
arrayList=tb.getArray(tb.getTASK_DM());
iterator=arrayList.iterator();
while(iterator.hasNext()){
int id=((Integer)iterator.next()).intValue();
ACDbean cri=((DefaultDataBase)db).getACD(id,dmTable);
arrayC.add(cri);
}
db.closeResultSet();
}
}
/code]
歇歇le
------解决方案--------------------输出一下arrayList
看看得到的是几个地址值。
另外while(iterator.hasNext()){
里面输出一下int id看看
------解决方案--------------------