如何在循环时就地编辑ArrayList的内容

sal*_*ter 2 java string arraylist

假设我有一个字符串的ArrayList,其中包含"hello"和"world"字样.我想在每个末尾添加单词"java".

我试图在循环时这样做,但没有成功.请建议我一个相同的方法.另一方面,我发现是创建一个不同的ArrayList和复制内容,但我不认为在空间方面是有效的.

import java.util.ArrayList;

public class EditArrayListInLoop {
    public static void main(String[] args) {
        ArrayList<String> arrayList = new ArrayList<String>();

        arrayList.add("hello");
        arrayList.add("world");

        /* This does not work */
        /*for(int i = 0;i<arrayList.size();i++)
        {
            arrayList.get(i) += "java";
        }*/

        ArrayList<String> arrayList2 = new ArrayList<String>();
        for(int i = 0;i<arrayList.size();i++)
        {
            String test = arrayList.get(i);
            test += "java";
            arrayList2.add(test);
        }
        System.out.println(arrayList2);
    }
}   
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 8

test += "java";不会更改String返回的内容arrayList.get(i).它创造了一个新的String.Strings是不可变的,所以没有办法改变其中的String对象List.您只能用新String对象替换它们.

使用arrayList.set(index,newValue)更换的第i个元素List:

for(int i = 0;i<arrayList.size();i++)
{
    arrayList.set(i,arrayList.get(i)+"java");
}
Run Code Online (Sandbox Code Playgroud)