Java - ist für Verkettung des Strings in einem String in Funktion eine eingebaute [] da?

StackOverflow https://stackoverflow.com/questions/1810954

  •  06-07-2019
  •  | 
  •  

Frage

oder ein besserer Weg, als das?

String concat(String[] strings) {
  StringBuilder out = new StringBuilder();

  for(String next: strings) {
    out.append(next);
  }

  return out.toString();
}

Keine Sorge, wenn nein, ich fühle mich wie es sollte ein eingebaut sein?

War es hilfreich?

Lösung

Nein, nicht in der aktuellen Java-Bibliothek.

In JDK7 sollten Sie in der Lage sein String.join("", strings) zu schreiben. Es wurde festgestellt, dass „85%“ der Anwendungen für einen Index im noblen for-Schleife zu wollen war ein String beitreten zu tun (was man ohne sowieso tun kann).

Ich denke, wenn man uber effizient sein wollen, können Sie es als etwas schreiben könnte wie:

public static String concat(String... strs) {
    int size = 0;
    for (String str : strs) {
        size += str.length;
    }

    final char[] cs = new char[size];
    int off = 0;
    try {
        for (String str : strs) {
            int len = str.length();
            str.getChars(0, len, cs, off);
            off += len;
        }
    } catch (ArrayIndexOutOfBoundsException exc) {
        throw new ConcurrentModificationException(exc);
    }
    if (off != cs.length) {
        throw new ConcurrentModificationException();
    }
    return new String(cs);
}

(nicht kompiliert oder getestet, natürlich.)

Andere Tipps

Werfen Sie einen Blick auf den neuen Google Guava Bibliotheken , die einbaut Google Kollektionen einmal geht es von 1.0RC4 bis 1,0. Guava und Sammlungen geben Sie ziemlich viel Kraft und Eleganz und sind bereits ausführlich in Google Produktionscode verwendet wird.

Die Joiner Klasse passt zu Ihrem Beispiel perfekt:

String[] strings = { "Stack", "Overflow", ".com" };
String site = Joiner.on("").join(strings);

Aleksander Stensby hat eine schöne vier Teil Exploration von Guava / Sammlungen.

Wie Apache Collections, es ist nicht Teil des JDK, obwohl es auf der java.util.Collection sehr sorgfältig erstellt.

org.apache.commons.lang.StringUtils.join

Zweite Empfehlung an Google Guava zu suchen.

Die Google Kollektionen wurden letzte Woche veröffentlicht, und in dieser Woche, Guava wird zum Testen freigegeben. Die Google Kollektionen Zeug ist solide und das API wird sich nicht ändern. Ich viel lieber Google Sammlungen über die Apache ein, und zwar, weil seine vollständig generisch. Die Google Leute behaupten auch, dass seine schnell genug für sie in der Produktion zu verwenden, was ziemlich beeindruckend ist, altho ich nicht, dass persönlich überprüfen kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top