Добавление элемента к ArrayList<String>
, который был построен за 2 шага, приводит к несинхронизированному массиву.Это происходит только в сгенерированном коде 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));