2015-08-16 4 views
1

У меня есть ArrayList, называемый PhotoArrayList. Он содержит строки типа picture1.jpg, picture2.png, picture3.gif и т. Д. В этом ArrayList есть как 50 или 60 строк. Мне нужно добавить путь к своей папке в начале, как «mnt/sdcard0/Pictures/picture1.jpg и т. Д.» Итак, я использую следующий код:ArrayList string string mess up string

Integer PhotoFileAmount = PhotoArray.length; //PhotoArray and PhotoArrayList are same 
for(int i=0; i < PhotoFileAmount; i++){ 
      String PhotoFileAndPath = (PhotoFolder + '/' + PhotoArrayList.get(i)); 
      PhotoArrayList.remove(PhotoArrayList.get(i)); 
      PhotoArrayList.add(PhotoFileAndPath); 
     } 

Но я получаю странный результат. Начало PhotoArrayList не изменилось, пока средняя часть в порядке, и последняя часть получает путь twitce. Как «picture1.jpg, мнт/sdcard0/Фотография/picture2.png, мнт/sdcard0/Фотография/мнт/sdcard0/Фотография/picture3.gif

ответ

2

Если вы хотите изменить элементы ArrayList, используйте set метод для присвоить новое значение элемента в заданном положении:

Если вы используете remove и add вы меняете не только индексы элементов в списке, даже если вы делаете это работать, это очень неэффективно, так как все Остальные элементы в списке должны быть перемещены каждый раз, когда вызывается remove.

1

ArrayList.add(E Object) добавляет Object в конце списка.
В настоящее время вы удаляете элемент из того места, где он есть в списке, а затем добавляете новую версию в конце списка. Поскольку i подходит к PhotoFileAmount, ваш оператор .get(i) начнет извлекать измененные объекты, которые вы добавили в конце.

Смежные вопросы