例:
List<List<Integer>> Llist = new ArrayList<List<Integer>>(); //定义list中包含list并生成Llist对象
List<Integer> list = new ArrayList<List>(); //定义子list
while(xx){
list.add(1);
Llist.add(list);
list.clear();
}
由于list相当于指针变量,当释放list中信息时,Llist中刚刚被add进去的值也被释放掉了。
如 PascalTriangle.java SRC
import java.util.ArrayList;
import java.util.List;
public class PascalTriangle {
public static void main(String[] args){
PascalTriangle pt = new PascalTriangle();
List<List<Integer>> list = new ArrayList<List<Integer>>();
list = pt.generate(2);
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
List<List<Integer>> generate(int numrow){
List<List<Integer>> Llist = new ArrayList<List<Integer>>();
List<Integer> list = new ArrayList<Integer>();
int row = 1;
if(numrow>0){
while(row<numrow+1){
list.add(1); //the first element
if(row>1){ //count row
if(row>2){
for(int i=0;i<row-2;i++) //loop count for a row
{
// list.add(Llist.get(row-2).get(i)+Llist.get(row-2).get(i+1));
}
}
list.add(1); //the last element
}
System.out.println(list);
Llist.add(list); //add到List后释放
list.clear();
row++;
}
}
System.out.println(Llist);
return Llist;
}
}
结果: [1]
[1, 1]
[[], []] //最后输出Llist为空