本人想把getCloudletList()得到的列表放到vmList中每个元素的waitingCloudletList列表中,然后删除vmList中某个对象的waitingCloudletList列表中的内容,发现把vmList中其他对象的waitingCloudletList列表中的内容也删除了!!估计是引用问题。应该如何解决?好久不写程序,手很生,望多指教!for (int j=0; j< vmNum; j++)
{
vmList.get(j).setWaitingCloudletList(getCloudletList());
}
vmList.get(0).getWaitingCloudletList().clear();//为什么把其他对象中的元素也清除了?
for (int j=1; j< vmNum; j++)
{
vmList.get(j).getWaitingCloudletList();
}
{
vmList.get(j).setWaitingCloudletList(getCloudletList());
}
vmList.get(0).getWaitingCloudletList().clear();//为什么把其他对象中的元素也清除了?
for (int j=1; j< vmNum; j++)
{
vmList.get(j).getWaitingCloudletList();
}
public void clear() {
modCount++;
// Let gc do its work
for (int i = 0; i < size; i++)
elementData[i] = null;
size = 0;
}chear()方法是将list里面的所有元素设为空,然后有gc执行回收,而你的vmList.get(0).getWaitingCloudletList()==getCloudletList(),你清空后,相当于getCloudletList()这个对象清空了,那么你在执行 vmList.get(j).getWaitingCloudletList()时返回的getCloudletList()==null.
PS:vmList.get(0).getWaitingCloudletList()=null,改成这样应该是能达到你的要求。
{
vmList.get(j).setWaitingCloudletList(getCloudletList());
}hehe,这就是个set方法,传进来的就是getCloudletList()这个对象,不知道你将的每次new新的list从何讲起?
我认为在每次Set的时候必须new一个,其实这个问题你可以想一下DB接收的数据的时候,如果你的实体类接受数据不new一个的话,所有的实体类都会对应最后一条记录一样的.