import java.util.ArrayList;
public class Test{
    public static void main(String[] args) {
ArrayList array = new ArrayList();
array.add("A");
ArrayList result = new ArrayList();
result.add(array);
for(int i=0; i<3; i++){
         ArrayList newArrayList = new ArrayList();
array.add("a");
newArrayList = array;
result.add(newArrayList);
}
for(int i=0; i<result.size(); i++){
System.out.println();
for(int j=0; j<((ArrayList)result.get(i)).size(); j++){
System.out.print(((ArrayList)result.get(i)).get(j)+" ");
}
}
    }
}
其结果为:
A a a a 
A a a a 
A a a a 
A a a a
如何实现如下结果呢?

A a
A a a  
A a a a

解决方案 »

  1.   

    其结果为:
    A a a a 
    A a a a 
    A a a a 
    A a a a
    很正确也很容易理解啊?有什么问题?
      

  2.   

    所有ArrayList实类都指向同一个内存地址
    每一个实类都另外开辟一个存储空间 要如何实现???
      

  3.   

    public class Test {
    public static void main(String[] args) {
    ArrayList array = new ArrayList();
    array.add("A");
    ArrayList result = new ArrayList();
    result.add(new ArrayList(array));
    for (int i = 0; i < 3; i++) {
    array.add("a");
    ArrayList newArrayList = new ArrayList(array);
    result.add(newArrayList);
    }
    for (int i = 0; i < result.size(); i++) {
    System.out.println();
    for (int j = 0; j < ((ArrayList) result.get(i)).size(); j++) {
    System.out.print(((ArrayList) result.get(i)).get(j) + " ");
    }
    }
    }
    }
    这样就可以实现
    newArrayList = array;//newArrayList和array指向同一个内存地址
    newArrayList = new ArrayList(array);//newArrayList和array指向不同的内存地址
      

  4.   

    自定义类Mylist继承ArrayList
    import java.util.ArrayList;
    import java.util.Collection;/*
     * Created on 2006-4-19
     *
     * TODO To change the template for this generated file go to
     * Window - Preferences - Java - Code Style - Code Templates
     *//**
     * @author Administrator
     *
     * TODO To change the template for this generated type comment go to
     * Window - Preferences - Java - Code Style - Code Templates
     */
    public class MyList extends ArrayList {
    public MyList(){
    super();
    }

    public MyList(Collection c){
    super();
    }

    public void removeBound(int fromIndex, int toIndex){
    removeRange(fromIndex, toIndex);
    }}
    主函数如下:
    public class TestMyList { /**
     * @param args
     */
    public static void main(String[] args) {
    MyList array = new MyList();
    array.add("A");
    MyList result = new MyList();
    result.add(new MyList(array));
    for (int i = 0; i < 3; i++) {
    array.add("a");
    MyList newArrayList = new MyList(array);
    result.add(newArrayList);
    }
    for (int i = 0; i < result.size(); i++) {
    System.out.println();
    for (int j = 0; j < ((MyList) result.get(i)).size(); j++) {
    System.out.print(((MyList) result.get(i)).get(j) + " ");
    }
    }
    }}
    为什么没有结果呢?
    如何实现如下结果呢?

    A a
    A a a  
    A a a a
      

  5.   

    public MyList(Collection c){
    super();
    }
    构造函数错了
    应该是
    public MyList(Collection c){
    super(c);
    }