2016-04-19 18 views
0

Ich habe folgend:Wie Element in einer Arraylist in mehrdimensionalen Arraylist spalten

[[Statistics (pH)], [ Upright Normal Recumbent Normal Total]] 

Ich mag das erste Element des zweiten Elements auf Leerzeichen trennen, so dass ich am Ende mit:

[[Statistics (pH)], [Upright,Normal,Recumbent,Normal,Total]] 
so weit

Mein Code:

for (ArrayList<List<String>> row2 : StatspH) { 
row2.get(1).get(0).split("\\s"); 
} 

aber nichts passiert

+0

Java-Strings sind unveränderlich. 'row2.get (1) .get (0) .split (" \\ s ")' teilt die Zeichenfolge auf, aber Sie verwirft die zurückgegebene 'String []'. –

+0

String-Methoden sind keine Mutatoren, tatsächlich ist String selbst in Java unveränderlich. 'split()' gibt eine neue Instanz von String [] zurück. – 11thdimension

+1

Außerdem müssen Sie vor dem Teilen trimmen, um das Ergebnis zu erhalten. –

Antwort

1

Java-Strings are immutable, so müssen Sie den Rückgabewert von split("\\s") in der richtigen List speichern.

Ich empfehle etwas wie

for (ArrayList<List<String>> row2 : StatspH) { 
    List<String> stats = row2.get(1); 

    // remove() returns the object that was removed 
    String allStats = stats.remove(0); 

    Collections.addAll(stats, allStats.split("\\s")); 
} 

Beachten Sie, dass wir die ursprüngliche Zeichenfolge zuerst sind zu entfernen, dann alle ‚split‘ Werte addiert.