ArrayList字符串循环搞乱字符串

时间:2015-08-16 01:02:04

标签: java android arraylist

我有一个名为PhotoArrayList的ArrayList。它包含像“picture1.jpg,picture2.png,picture3.gif等”的字符串。此ArrayList中有50或60个字符串。我需要在开头添加文件夹的路径,如“mnt / sdcard0 / Pictures / picture1.jpg等”。所以,我正在使用以下代码

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,mnt / sdcard0 / Pictures / picture2.png,mnt / sdcard0 / Pictures / mnt / sdcard0 / Pictures / picture3.gif

2 个答案:

答案 0 :(得分:2)

如果要更改ArrayList的元素,请使用set方法为给定位置的元素指定新值:

int PhotoFileAmount = PhotoArray.length; // use int here to avoid unnecessary boxing / unboxing

for(int i=0; i < PhotoFileAmount; i++){
    String PhotoFileAndPath = (PhotoFolder + '/' + PhotoArrayList.get(i));
    PhotoArrayList.set(i, PhotoFileAndPath);
}

如果您使用removeadd,您不仅可以更改列表中元素的索引;即使你让它工作也是非常低效的,因为每次调用remove时都必须移动列表中的所有元素。

答案 1 :(得分:1)

ArrayList.add(E Object)在列表末尾添加Object 您当前正在从列表中的任何位置删除项目,然后在列表的末尾添加新版本。当i接近PhotoFileAmount时,您的.get(i)语句将开始检索您最后添加的修订对象。