使用modyfing String迭代List <String>

j2j*_*j2j 6 java string collections

我无法通过这种方式修改List的元素:

for (String s : list)
{
   s = "x" + s;
}
Run Code Online (Sandbox Code Playgroud)

执行后,此列表的这些代码元素不变.如何通过List以最简单的方式实现迭代迭代.

Gab*_*abe 13

由于String对象是不可变的,因此无法更改迭代的值.此外,您无法修改在此循环中迭代的列表.执行此操作的唯一方法是使用标准循环迭代列表索引或使用ListIterator接口:

for (int i = 0; i < list.size(); i++)
{
    list.set(i, "x" + list.get(i));
}

for (ListIterator i = list.listIterator(); i.hasNext(); )
{
    i.set("x" + i.next());
}
Run Code Online (Sandbox Code Playgroud)

  • @finnw:问题的*根*是`String`是不可变的.如果OP使用`List <StringBuffer>`,这个问题就不会出现在第一位.OP是否"试图"改变字符串或修改列表不是我们可以回答的问题,因为他可以认为`s ="x"+ s;`就像他认为修改字符串一样容易改变字符串列表. (2认同)

Joh*_*erg 2

Java 字符串是不可变的,因此无法修改。此外,如果您希望修改列表,请使用迭代器接口。