Verketten von durch Kommas getrennten Zeichenfolgen mit StringJoiner auch in einer Java7-Umgebung

Einführung

Ich arbeite derzeit für eine bestimmte SI-Firma und nehme derzeit an einem Java-Wartungsprojekt teil.

    for (String hoge :) {
      if (sb.length() != 0) {
        sb.append(",");
      }
      sb.append("");
    }

Wenn Sie StringBuilder zum Verketten von Zeichenfolgen verwenden (beim Generieren von CSV-ähnlichen Zeichen usw.), denke ich manchmal, dass ** java8 oder höher mit StringJoiner ... ** problemlos ausgeführt werden kann. ↓ Das ist es. Ich möchte eine Liste von etwas verketten. String java7 Ich denke, dass es andere SIer-Leute gibt, die an dem folgenden Projekt teilnehmen und ähnliche Probleme haben, ** String Joiner Ich habe meine eigene Klasse erstellt, die sich genauso verhält, und sie als Bibliothek freigegeben, damit sie unter der Java7-Umgebung </ font> ** verwendet werden kann. Alles ist in Ordnung, also wollte ich nur meine eigene Bibliothek für die Öffentlichkeit öffnen.

Also habe ich meinen eigenen StringJoiner für Java7 gemacht

Ich habe eine Klasse namens StringJoiner erstellt und als Bibliothek veröffentlicht. In Wirklichkeit ist es eine Wrapper-Klasse für StringBuilder. Es ist eine Klasse, die intern über StringBuilder verfügt und nur Trennzeichen, Präfix und Suffix gut verkettet. Klicken Sie hier für die Quelle ↓ https://github.com/lovelyswallow/swallowJava8/blob/master/src/main/java/com/lovelyswallow/likejava8/util/StringJoiner.java

Vorbereiten der Verwendung von StringJoiner mit Java7

Sie können auf die unten stehende URL zugreifen und das Glas direkt herunterladen oder einfach das Glas mit Gradle usw. herunterladen. Da java.util.StringJoiner in java7 nicht verwendet werden kann, Wenn Sie stattdessen "com.lovelyswallow.likejava8.util.StringJoiner" importieren, können Sie es auf dieselbe Weise wie den Java-Standard StringJoiner verwenden. https://mvnrepository.com/artifact/io.github.lovelyswallow/swallowJava8

Ich habe in 1.0 einen Fehler gemacht und ihn mit ** java12 </ font> ** kompiliert, sodass er in der Java7-Zielumgebung nicht funktioniert (lacht). Bitte verwenden Sie 1.1 oder höher, wenn Sie verwenden. Der Inhalt von 1.1 und 1.1.1 ist der gleiche. 1.1.1 war nur eine leere Veröffentlichung, weil ich die Nebenversion ** erhöhen wollte **.

So verwenden Sie StringJoiner

Da es dieselbe Methode wie der Java-Standard StringJoiner bietet, kann es genauso verwendet werden. Der einzige Unterschied zum Java-Standard ist der Typ des Konstruktors. Es ist vielleicht nicht notwendig, es jetzt zu erklären, aber vorerst habe ich ein Beispiel für die Verwendung geschrieben.

import com.lovelyswallow.likejava8.util.StringJoiner;

final class Test {
  public static void main(String[] args) {
    StringJoiner sj1 = new StringJoiner(",");
    sj1.add("hoge");
    sj1.add("fuga");
    sj1.add("piyo");
    System.out.println(sj1.toString()); // => hoge,fuga,piyo

    StringJoiner sj2 = new StringJoiner(",", "prefix", "suffix");
    sj2.add("hoge");
    sj2.add("fuga");
    sj2.add("piyo");
    System.out.println(sj2.toString()); // => prefixhoge,fuga,piyosuffix

    //Da es sich tatsächlich um eine Wrapper-Klasse von StringBuilder handelt, können Sie die Kapazität im Konstruktor angeben.
    StringJoiner sj3 = new StringJoiner(",", 100);
    StringJoiner sj4 = new StringJoiner(",", "prefix", "suffix", 100);
  }
}

Schließlich

Wie ich am Anfang sagte, ist es eine Bibliothek für die folgenden Personen, daher ist es jetzt nicht sehr nützlich.

  • SIer Person
  • Teilnahme an der Seite von Java7
  • Java kann aus Projektgründen nicht aktualisiert werden
  • Ich möchte die in Java8 geborene API verwenden

Diesmal habe ich diese Bibliothek erstellt, weil ich glaubte, dass es neben mir noch andere SIer gibt, die die gleichen Probleme haben.

In Zukunft möchte ich eine andere Java8-ähnliche Klasse für eine Java7-Umgebung als StringJoiner erstellen. Es kann jedoch subtil sein, wenn Sie den Lambda-Ausdruck nicht verwenden können, wenn Sie etwas erstellen, das sich wie Stream verhält. .. ..

Viel Glück Japan: Kacke:

Recommended Posts