Comment concaténer des chaînes séparées par des virgules à l'aide de StringJoiner même dans un environnement Java7

introduction

Je travaille actuellement pour une certaine société SI, et je participe actuellement à un projet de maintenance Java. La version du système en cours de maintenance et de développement est ancienne et j'utilise malheureusement java7.

Lorsque vous utilisez StringBuilder pour concaténer des chaînes (lors de la génération de caractères de type csv, etc.), je pense parfois que ** java8 ou supérieur peut être facilement fait avec StringJoiner ... **. ↓ Voilà ce que c'est.

    for (String hoge :Liste de quelque chose) {
      if (sb.length() != 0) {
        sb.append(",");
      }
      sb.append("Chaîne de caractères à concaténer");
    }

Je pense qu'il y a d'autres SIers qui participent à des projets sous java7 et ont des problèmes similaires, j'ai donc créé une classe auto-conçue qui se comporte de la même manière que ** StringJoiner. Cependant, il a été publié en tant que bibliothèque afin de pouvoir être utilisé sous l'environnement java7 </ font> **.

Tout va bien, alors je voulais juste faire l'acte ** d'ouvrir ma propre bibliothèque au public **.

J'ai donc créé mon propre String Joiner pour java7

J'ai créé une classe nommée StringJoiner et l'ai publiée en tant que bibliothèque. En réalité, c'est une classe wrapper pour StringBuilder. C'est une classe qui a StringBuilder en interne et concatène simplement le délimiteur, le préfixe et le suffixe. Cliquez ici pour la source ↓ https://github.com/lovelyswallow/swallowJava8/blob/master/src/main/java/com/lovelyswallow/likejava8/util/StringJoiner.java

Préparation à l'utilisation de StringJoiner avec java7

Accédez simplement à l'URL ci-dessous et téléchargez le pot directement, ou obtenez le pot avec gradle, etc. Puisque java.util.StringJoiner ne peut pas être utilisé dans java7, Si vous importez com.lovelyswallow.likejava8.util.StringJoiner à la place, vous pouvez l'utiliser de la même manière que le standard java StringJoiner. https://mvnrepository.com/artifact/io.github.lovelyswallow/swallowJava8

J'ai fait une erreur dans la version 1.0 et je l'ai compilé avec ** java12 </ font> **, donc cela ne fonctionne pas sous l'environnement cible java7 (rires). Veuillez utiliser la version 1.1 ou supérieure lors de l'utilisation. Le contenu de 1.1 et 1.1.1 est le même. 1.1.1 était juste une version vierge parce que je voulais faire l'acte de ** élever la version mineure **.

Comment utiliser StringJoiner

Puisqu'il fournit la même méthode que le StringJoiner standard java, il peut être utilisé exactement de la même manière. La seule différence avec la norme java est le type de constructeur. Il n'est peut-être pas nécessaire de l'expliquer maintenant, mais pour le moment, j'ai écrit un exemple de son utilisation.

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

    //Puisqu'il s'agit en fait d'une classe wrapper de StringBuilder, vous pouvez spécifier la capacité dans le constructeur.
    StringJoiner sj3 = new StringJoiner(",", 100);
    StringJoiner sj4 = new StringJoiner(",", "prefix", "suffix", 100);
  }
}

finalement

Comme je l'ai dit au début, c'est une bibliothèque pour les personnes suivantes, donc ce n'est pas très utile maintenant.

  • Personne SIer
  • Participer au site de java7
  • Impossible de mettre à jour java pour des raisons de projet
  • Je souhaite utiliser l'API née en java8

J'ai créé cette bibliothèque cette fois, croyant qu'il y a d'autres SIers qui ont les mêmes problèmes.

À l'avenir, je voudrais créer quelque chose de classe de type java8 pour l'environnement java7 autre que StringJoiner. Cependant, cela peut être subtil si vous ne pouvez pas utiliser l'expression lambda lorsque vous créez quelque chose qui se comporte comme Stream. .. ..

Bonne chance Japon: merde:

Recommended Posts