Come altri hanno fatto notare:
- Non è possibile modificare le stringhe in Java, quindi
s = "x" + s
creerà una nuova stringa (che non saranno contenuti nella lista)
- Anche se si potesse, la variabile
s
è una variabile locale che, se assegnata a, non influisce sui valori contenuti nell'elenco.
La soluzione è in questo caso di utilizzare un StringBuilder
che rappresenta una stringa che si può effettivamente modificare o utilizzare un ListIterator
come @ Michael Borgwardt e @jarnbjo sottolinea.
Utilizzando un StringBuilder
:
List<StringBuilder> someStrings = new LinkedList<StringBuilder>();
someStrings.add(new StringBuilder("hello"));
someStrings.add(new StringBuilder("world"));
for (StringBuilder s : someStrings)
s.insert(0, "x");
Utilizzando un ListIterator
:
List<String> someStrings = new LinkedList<String>();
someStrings.add("hello");
someStrings.add("world");
for (ListIterator<String> iter = someStrings.listIterator(); iter.hasNext();)
iter.set("x" + iter.next());
ideone.com demo
L'unica modifica consentita dall'interfaccia Iterator è la cancellazione. L'interfaccia ListIterator, d'altra parte, ha metodi set() e add(). –
Ovviamente hai ragione, buon chiarimento. –