日期:2014-05-20  浏览次数:20747 次

求助,一个关于List的问题!!!
Java code
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

------解决方案--------------------
Java code

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();
        }
    }
}

------解决方案--------------------
楼主象是要这样的结果:

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保存的是同一个对象,楼上应该是对的,每次存入一个新的对象。