程序
import java.util.ArrayList;
import java.util.List;public class ArrayListTest {
public static void main(String[] args){
try{
List aa = new ArrayList();
List bb = new ArrayList();
bb.add("11");
bb.add("22");
aa.add(bb);
bb = new ArrayList();
bb.add("33");
bb.add("44");
aa.add(bb);
for(int i=0,cnt1=aa.size();i<cnt1;i++){
bb = (ArrayList)aa.get(i);
for(int j=0,cnt2=bb.size();j<cnt2;j++){
System.out.println("bb:"+bb.get(j).toString());
}
}
}catch(Exception e){
System.out.println("已运行 ArrayListTest:"+e);
}
}}
输出结果
bb:11
bb:22
bb:33
bb:44import java.util.ArrayList;
import java.util.List;public class ArrayListTest {
public static void main(String[] args){
try{
List aa = new ArrayList();
List bb = new ArrayList();
bb.add("11");
bb.add("22");
aa.add(bb);
bb.clear();
bb = new ArrayList();
bb.add("33");
bb.add("44");
aa.add(bb);
bb.clear();
for(int i=0,cnt1=aa.size();i<cnt1;i++){
bb = (ArrayList)aa.get(i);
for(int j=0,cnt2=bb.size();j<cnt2;j++){
System.out.println("bb:"+bb.get(j).toString());
}
}
}catch(Exception e){
System.out.println("已运行 ArrayListTest:"+e);
}
}}
这段程序在把bb放入aa之后做了一个clear。结果就什么结果都没输出。bb.size()的值总是0。这是为什么?我是在bb放入aa之后做的clear啊。按说bb的值应该已经放入aa了。为啥运行结果是什么都没有呢。请高手指点一下:)
import java.util.ArrayList;
import java.util.List;public class ArrayListTest {
public static void main(String[] args){
try{
List aa = new ArrayList();
List bb = new ArrayList();
bb.add("11");
bb.add("22");
aa.add(bb);
bb = new ArrayList();
bb.add("33");
bb.add("44");
aa.add(bb);
for(int i=0,cnt1=aa.size();i<cnt1;i++){
bb = (ArrayList)aa.get(i);
for(int j=0,cnt2=bb.size();j<cnt2;j++){
System.out.println("bb:"+bb.get(j).toString());
}
}
}catch(Exception e){
System.out.println("已运行 ArrayListTest:"+e);
}
}}
输出结果
bb:11
bb:22
bb:33
bb:44import java.util.ArrayList;
import java.util.List;public class ArrayListTest {
public static void main(String[] args){
try{
List aa = new ArrayList();
List bb = new ArrayList();
bb.add("11");
bb.add("22");
aa.add(bb);
bb.clear();
bb = new ArrayList();
bb.add("33");
bb.add("44");
aa.add(bb);
bb.clear();
for(int i=0,cnt1=aa.size();i<cnt1;i++){
bb = (ArrayList)aa.get(i);
for(int j=0,cnt2=bb.size();j<cnt2;j++){
System.out.println("bb:"+bb.get(j).toString());
}
}
}catch(Exception e){
System.out.println("已运行 ArrayListTest:"+e);
}
}}
这段程序在把bb放入aa之后做了一个clear。结果就什么结果都没输出。bb.size()的值总是0。这是为什么?我是在bb放入aa之后做的clear啊。按说bb的值应该已经放入aa了。为啥运行结果是什么都没有呢。请高手指点一下:)
public void clear() {
modCount++; // Let gc do its work
for (int i = 0; i < size; i++)
elementData[i] = null; size = 0;
}
bb.clear(); //aa里有一个引用,bb也是一个引用,它们引用同一个对象ArrayList cc = null;
cc=bb;//这里相当于aa.add(bb);让cc也引用这个对象.bb.clear();//这里清空了,那么cc的当前也是被空了,因为bb,cc都是引用同一个对象.cc.size();//也就是0了.等于aa.get(i).size也是0