IE8 Array Ordering Bug - PullRequest
       2

IE8 Array Ordering Bug

1 голос
/ 21 декабря 2011

Добавление элемента к 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));

1 Ответ

0 голосов
/ 21 декабря 2011

возможно, это ошибка JavaScript с IE, попробуйте добавить каждый элемент отдельно вместо использования addAll и посмотрите, что происходит, отладив код:

for(int i=1;i<33;i++) list.add(i+"");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...