Ich habe eine ArrayList
die ich vollständig als String ausgeben möchte. Im Wesentlichen möchte ich sie in der Reihenfolge ausgeben, in der die toString
der einzelnen Elemente durch Tabulatoren getrennt. Gibt es eine schnelle Möglichkeit, dies zu tun? Sie könnten Schleife durch sie (oder entfernen Sie jedes Element) und verketten es zu einem String, aber ich denke, dies wird sehr langsam sein.
Antworten
Zu viele Anzeigen?List<String> stringList = getMyListOfStrings();
StringJoiner sj = new StringJoiner(" ");
stringList.stream().forEach(e -> sj.add(e));
String spaceSeparated = sj.toString()
Sie übergeben an den new StringJoiner
die Zeichenfolge, die als Trennzeichen verwendet werden soll. Wenn Sie eine CSV-Datei erstellen möchten: new StringJoiner(", ");
Wenn Sie nicht wollen, dass der letzte \t nach dem letzten Element müssen Sie den Index zur Überprüfung verwenden, aber denken Sie daran, dass dies nur "funktioniert" (d.h. O(n)), wenn lists den RandomAccess implementiert.
List<String> list = new ArrayList<String>();
list.add("one");
list.add("two");
list.add("three");
StringBuilder sb = new StringBuilder(list.size() * apprAvg); // every apprAvg > 1 is better than none
for (int i = 0; i < list.size(); i++) {
sb.append(list.get(i));
if (i < list.size() - 1) {
sb.append("\t");
}
}
System.out.println(sb.toString());
Der folgende Code könnte Ihnen helfen,
List list = new ArrayList();
list.add("1");
list.add("2");
list.add("3");
String str = list.toString();
System.out.println("Step-1 : " + str);
str = str.replaceAll("[\\[\\]]", "");
System.out.println("Step-2 : " + str);
出力します:
Step-1 : [1, 2, 3]
Step-2 : 1, 2, 3
Das ist vielleicht nicht der beste Weg, aber ein eleganter Weg.
Arrays.deepToString(Arrays.asList("Test", "Test2")
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
System.out.println(Arrays.deepToString(Arrays.asList("Test", "Test2").toArray()));
}
}
Ausgabe
[Test, Test2]