public static void main(String[] args)
{
List<Integer> list = new ArrayList<Integer> ();
list.add(6);
list.add(1);
list.add(8);
int len = list.size();
for (int i = 0; i < len; i++) {
list.add(i+1, new Integer(i));
System.out.println(list + "Iteration: " + i);
Object x = list.set(i, new Integer(i+2));
}
System.out.println(list);
}
为什么这段代码有效?它将arraylist变成:
[6,0,1,8]迭代:0
[2,0,1,1,8]迭代:1
[2,3,1,2,1,8]迭代:2
[2,3,4,2,1,8]
但我不确定为什么这行编译:
Object x = list.set(i, new Integer(i+2));
是不是将对象分配给不返回任何内容的方法?
答案 0 :(得分:5)
答案 1 :(得分:4)
根据How can I prevent SQL injection in PHP?,返回元素是先前在该位置的元素。
它不会返回无效。
答案 2 :(得分:1)
如果有疑问......
System.out.println(x.toString() + " x: " +i);
在你的对象赋值后抛出它,它会显示x的内容。如果你运行它,你将得到以下输出:
[6, 0, 1, 8]Iteration 0
6 x:0
[2, 0, 1, 1, 8]Iteration 1
0 x:1
[2, 3, 1, 2, 1, 8]Iteration 2
1 x:2
[2, 3, 4, 2, 1, 8]
从这里你可以看到每次迭代从list.set()方法返回的内容。第一次返回列表的第一个元素时,列表打印显示第一个元素已更改。下一次迭代返回第二个元素,然后打印列表并替换第二个元素。下一次迭代也会发生同样的情况。