352 Stimmen

Der beste Weg, um eine ArrayList in eine Zeichenkette zu konvertieren

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.

0voto

Alex VI Punkte 171

Dies ist ein ziemlich altes Thema mittlerweile und Apache Commons sind jetzt mit einem StringBuilder intern: http://commons.apache.org/lang/api/src-html/org/apache/commons/lang/StringUtils.html#line.3045

Dies wird bekanntlich die Leistung verbessern, aber wenn die Leistung entscheidend ist, könnte die verwendete Methode etwas ineffizient sein. Während die Schnittstelle flexibel ist und ein konsistentes Verhalten bei verschiedenen Collection-Typen ermöglicht, ist sie bei Lists, dem Collection-Typ, um den es in der ursprünglichen Frage ging, etwas ineffizient.

Ich begründe dies damit, dass uns ein gewisser Overhead entsteht, den wir vermeiden würden, wenn wir die Elemente einfach in einer herkömmlichen for-Schleife durchlaufen würden. Stattdessen passieren hinter den Kulissen einige zusätzliche Dinge, wie die Überprüfung auf gleichzeitige Änderungen, Methodenaufrufe usw. Die erweiterte for-Schleife führt andererseits zu demselben Overhead, da der Iterator für das Iterable-Objekt (die Liste) verwendet wird.

-1voto

android developer Punkte 111449

Wie wäre es mit dieser Funktion:

public static String toString(final Collection<?> collection) {
    final StringBuilder sb = new StringBuilder("{");
    boolean isFirst = true;
    for (final Object object : collection) {
        if (!isFirst)
            sb.append(',');
        else
            isFirst = false;
        sb.append(object);
    }
    sb.append('}');
    return sb.toString();
}

es funktioniert für jede Art von Sammlung...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X