【发布时间】:2014-02-12 02:24:12
【问题描述】:
我有一个ArrayList<String> 并想添加到已经在其中的字符串,但不替换它。如果没有myArrayList.set(index, myArrayList.get(index) + "myString");,这可能吗?据我了解,myArrayList.get(index) += "myString"; 不起作用,因为它是只读的。
【问题讨论】:
我有一个ArrayList<String> 并想添加到已经在其中的字符串,但不替换它。如果没有myArrayList.set(index, myArrayList.get(index) + "myString");,这可能吗?据我了解,myArrayList.get(index) += "myString"; 不起作用,因为它是只读的。
【问题讨论】:
语句myArrayList.get(index) += "myString"; 不起作用,因为您永远不会将它存储回arraylist。由于immutability of strings,您的新字符串已创建但未被引用。因此,您不会发现它反映在 arraylist 元素中。
就个人而言,我会选择第一种方式。
【讨论】:
java 中的字符串是不可变的。 ArrayList 的参与与问题无关。我猜你可以使用 ArrayList 作为你的用例。
myArray.get( i ).append( "foo" );
【讨论】:
String是一个不可变类,所以你不能这样做,如果你添加一个元素,你可以调用myArrayList.add(element)或myArrayList.add(index, element)
【讨论】:
也许您可以使用StringBuilder 代替String
例如,
ArrayList<StringBuilder> list = new ArrayList<StringBuilder>();
int index = 0;
list.add(new StringBuilder(""));
System.out.println(list.get(index));
list.get(index).append("once");
System.out.println(list.get(index));
list.get(index).append("-twice");
System.out.println(list.get(index));
【讨论】: