将元素添加到已在2个步骤中构造的ArrayList<String>
会导致不同步的数组。它只发生在生成的JS代码中,而不是在开发模式中。
// The list where the bug occurs
ArrayList<String> list = new ArrayList<String>();
// Add a first element to the List
list.add("0");
//tmpList with elements that we will add at the end of the original
//list(at least 32 elements makes the bug occurs)
ArrayList<String> tmpList = new ArrayList<String>();
for(int i=1;i<33;i++) tmpList.add(""+i);
list.addAll(tmpList);
// The bug occurs when we add an element X to the position
// 1 or 2. The bug also occurs when usind addAll method
list.add(1,"X");
结果数组是......
0 X 1 2 *4* *3* *4* 5 6 7 8 9 10 11 12 13 14 15
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
而不是预期的结果......
0 X 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
这是一种有效的解决方法。
ArrayList<String> finalList = new ArrayList<String>();
for(int i=0; i<1;i++)
finalList.add(list.get(i));
finalList.add("X");
for(int i=1; i<list.size();i++)
finalList.add(list.get(i));
答案 0 :(得分:0)
也许这是IE的javascript错误,尝试单独添加每个元素而不是使用 addAll ,看看调试代码发生了什么:
for(int i=1;i<33;i++) list.add(i+"");