Hvordan legge til element i List mens du itererer i java?

La oss si at jeg har en liste som:

List<String> list = new ArrayList<>();
list.add("a");
list.add("h");
list.add("f");
list.add("s");

Mens jeg itererer gjennom denne listen, vil jeg legge til et element på slutten av listen. Men jeg vil ikke iterere gjennom de nylig tilføyde elementene, det vil si at jeg vil iterere opp til den opprinnelige størrelsen på listen.

for (String s : list)
     /* Here I want to add new element if needed while iterating */

Kan noen foreslå meg hvordan kan jeg gjøre dette?

Iterere gjennom en kopi av listen og legge til nye elementer i den opprinnelige listen.

for (String s : new ArrayList(list))     
{
    list.add("u");
}

Se https://stackoverflow.com/questions/3410035/how-to-make-a-copy-of-arraylist-object-which-is-type-of-list

Kommentarer (0)

Bare iterer på den gammeldagse måten, fordi du trenger eksplisitt indekshåndtering:

List myList = ...
...
int length = myList.size();
for(int i = 0; i < length; i++) {
   String s = myList.get(i);
   // add items here, if you want to
}
Kommentarer (3)

Du kan iterere på en kopi (klone) av den opprinnelige listen:

List copy = new ArrayList(list);
for (String s : copy) {
    // And if you have to add an element to the list, add it to the original one:
    list.add("some element");
}

Merk at det ikke engang er mulig å legge til et nytt element i en liste mens du itererer på den, fordi det vil resultere i en ConcurrentModificationException.

Kommentarer (0)