import java.util.ArrayList;
import java.util.List;public class ListTest { public static void main(String[] args) {
List<Integer> intlist=new ArrayList<>();
List<List<Integer>> result=new ArrayList<List<Integer>>();
for(int i=0;i<10;i++){
intlist.clear();
for(int j=0;j<=i;j++)
intlist.add(j);
result.add(intlist);
}

for(List<Integer> list:result){
for(Integer i:list)
System.out.print(i+" ");
System.out.println();
}
}
}为什么运行结果是:0 1 2 3 4 5 6 7 8 9 
0 1 2 3 4 5 6 7 8 9 
0 1 2 3 4 5 6 7 8 9 
0 1 2 3 4 5 6 7 8 9 
0 1 2 3 4 5 6 7 8 9 
0 1 2 3 4 5 6 7 8 9 
0 1 2 3 4 5 6 7 8 9 
0 1 2 3 4 5 6 7 8 9 
0 1 2 3 4 5 6 7 8 9 
0 1 2 3 4 5 6 7 8 9 

解决方案 »

  1.   


    for(int j=0;j<=i;j++)
                    intlist.add(j);
    因为都只加了j 
    j就是0-9
    难道你想
    for(int j=0;j<=i;j++)
                    intlist.add(j*i);?
      

  2.   

    结果list的引用指向的都是同一块内存
      

  3.   


    import java.util.ArrayList;
    import java.util.List;public class ListTest {    public static void main(String[] args) {
                   List<List<Integer>> result=new ArrayList<List<Integer>>();
            for(int i=0;i<10;i++){
                 List<Integer> intlist=new ArrayList<>();
                for(int j=0;j<=i;j++)
                    intlist.add(j);
                result.add(intlist);
            }
            
            for(List<Integer> list:result){
                for(Integer i:list)
                    System.out.print(i+" ");
                System.out.println();
            }
        }
    }
    试试看
      

  4.   

    楼主象是要这样的结果:

    0 1 
    0 1 2 
    0 1 2 3 
    0 1 2 3 4 
    0 1 2 3 4 5 
    0 1 2 3 4 5 6 
    0 1 2 3 4 5 6 7 
    0 1 2 3 4 5 6 7 8 
    0 1 2 3 4 5 6 7 8 9 但result保存的是同一个对象,楼上应该是对的,每次存入一个新的对象。
      

  5.   

    可见:List.add(Object o);方法add进去的o为引用,外部o的引用改变也影响添加到list中的引用。