我试图用来ArrayList<ArrayList<String>>解析网页中的一些片段,但我的代码中出了问题:
ArrayList<ArrayList<String>> x = new ArrayList<ArrayList<String>>();
ArrayList<String> s = new ArrayList<String>();
int z, y, w = 0;
for(z=0; z<3;z++)
{
s.clear();
for(y=0;y<4;y++)
{
s.add(""+w++);
}
x.add(s);
}
for(ArrayList<String> tr : x)
{
for( String t : tr)
{
System.out.println(t);
}
System.out.println("-----------------");
}
Run Code Online (Sandbox Code Playgroud)
输出是:
8
9
10
11
8
9
10
11
8
9
10
11
Run Code Online (Sandbox Code Playgroud)
而不是(我的预期输出):
0
1
2
3
4
5
6
7
8
9
10
11
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释为什么会这样吗?谢谢.
它是Object内部循环的预期行为,因为s在每次迭代中都是一个相同的对象,所以需要在循环中创建新对象.
像这样更改你的代码:
for(z=0; z<3;z++)
{
s = new ArrayList<String>();
for(y=0;y<4;y++)
{
s.add(""+w++);
}
x.add(s);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |