En langage Java, la classe StringBuilder peut être utilisée à la place d’une chaîne de ca­rac­tères (string) tra­di­tion­nelle. Con­trai­re­ment à un string classique, elle permet de procéder à des mo­di­fi­ca­tions directes au sein de la chaîne de ca­rac­tères. Ces mo­di­fi­ca­tions peuvent être initiées par dif­fé­rentes méthodes.

String­Buil­der Java : une al­ter­na­tive au string tra­di­tion­nel

La classe String Java est immuable ou immutable, et se passe de sous-classes. Une al­ter­na­tive à cette classe finale en Java est StringBuilder. Cette dernière génère une séquence de ca­rac­tères pouvant être modifiée après sa création ce en quoi StringBuilder en Java est similaire à StringBuffer. Les deux classes rem­plis­sent en effet une tâche similaire, mais con­trai­re­ment à l’option Buffer, StringBuilder n’est pas syn­chro­nisé. Pour tra­vail­ler avec un seul thread (fil), ce choix est donc par­ti­cu­liè­re­ment re­com­mandé, car il est capable de tra­vail­ler beaucoup plus ra­pi­de­ment que la solution al­ter­na­tive. Dé­cou­vrons ensemble cette classe et ses pos­si­bi­li­tés.

Syntaxe et utilité

En Java, la syntaxe de String­Buil­der suit toujours le même modèle et se présente comme suit :

public final class StringBuilder
	extends Object
		implements Serializable, CharSequence
java

Pour com­prendre le fonc­tion­ne­ment de base de cette classe ainsi que son objectif, il convient tout d’abord de se pencher sur la classe String tra­di­tion­nelle. Lorsqu’un objet est déclaré dans String, celui-ci ne peut plus être modifié par la suite. Pour apporter des mo­di­fi­ca­tions, il faut créer un nouvel objet avec la valeur modifiée, puis l’en­re­gis­trer. Cela génère un surplus de données et peut entraîner une baisse des per­for­mances. Si, en revanche, vous utilisez String­Buil­der en Java pour une chaîne de ca­rac­tères, les mo­di­fi­ca­tions éven­tuelles seront apportées pré­ci­sé­ment à cette chaîne et aucune nouvelle chaîne ne sera créée. Ceci limite la quantité de données et améliore les per­for­mances.

Les con­truc­teurs de la classe

La classe Java StringBuilder dispose de quatre cons­truc­teurs qui aident à mettre la chaîne de ca­rac­tères dans le format approprié pour la classe. Ils servent également à la con­fi­gu­ra­tion. Voici les cons­truc­teurs et leurs fonctions :

  • StringBuilder() : génère un StringBuilder vide d’une capacité maximale de 16 ca­rac­tères.
  • StringBuilder(int capacity) : crée un StringBuilder sans ca­rac­tères, dont le nombre maximal de ca­rac­tères est défini à l’aide de l’argument capacity.
  • StringBuilder(CharSequence seq) : génère un StringBuilder avec les mêmes ca­rac­tères que la séquence de ca­rac­tères, CharSequence, déposée.
  • StringBuilder(String str) : crée un StringBuilder sur la base de la chaîne déposée.

Le fonc­tion­ne­ment des cons­truc­teurs en pratique peut être illustré au mieux par un exemple de code. Voici comment fonc­tion­nent ces quatre options :

public class Main {
	public static void main(String[] argv) throws Exception {
	StringBuilder str = new StringBuilder();
	str.append("ABC");
	System.out.println("Premier Constructor = " + str.toString());
	StringBuilder str2 = new StringBuilder(5);
	System.out.println("Deuxième Constructor = " + str2.capacity());
	StringBuilder str3 = new StringBuilder("ABCDEFGHIJK");
	System.out.println("Troisième Constructor = " + str3.toString());
	StringBuilder str4 = new StringBuilder(str3.toString());
	System.out.println("Quatrième Constructor = " + str4.toString());
	}
}
java

En utilisant la commande Java System.out.println pour la sortie, vous obtenez ceci :

Premier Constructor = ABC
Deuxième Constructor = 5
Troisième Constructor = ABCDEFGHIJK
Quatrième Constructor = ABCDEFGHIJK
java

Exemples de méthodes de StringBuilder en Java

Il existe de nom­breuses méthodes pour la classe String­Buil­der Java. Voici les plus im­por­tantes d’entre elles, avec les extraits de code cor­res­pon­dants.

append()

La méthode append() est utilisée pour ajouter un string à un autre. Elle a dif­fé­rents pa­ra­mètres. En pratique, la méthode fonc­tionne comme illustré dans l’exemple suivant :

public class Main {
	public static void main(String[] argv) throws Exception {
	StringBuilder str = new StringBuilder("ABCDE");
	str.append("FGHIJK");
	System.out.println(str);
	}
}
java

La sortie générée est :

ABCDEFGHIJK
java

insert()

La méthode insert() est utilisée en com­bi­nai­son avec StringBuilder pour insérer un string à un em­pla­ce­ment précis. Voici un exemple qui illustre cette méthode :

public class Main {
	public static void main(String[] argv) throws Exception {
	StringBuilder str = new StringBuilder("ABCDE");
	str.insert(1,"FGHIJK");
	System.out.println(str);
	}
}
java

Le résultat obtenu est le suivant :

AFGHIJKBCDEFGHIJK
java

Avec Integer (dans ce cas 1), vous dé­ter­mi­nez la position à laquelle la chaîne de ca­rac­tères doit être insérée.

replace()

La méthode replace() remplace un string ou une partie d’un string. Elle est définie par beginIndex et endIndex. Voici l’exemple cor­res­pon­dant :

public class Main {
	public static void main(String[] argv) throws Exception {
	StringBuilder str = new StringBuilder("ABCDE");
	str.replace(1,4,"FGHIJK");
	System.out.println(str);
	}
}
java

La sortie obtenue a la forme suivante :

AFGHIJKE
java

reverse()

La méthode reverse() permet d’inverser com­plè­te­ment le string déposé. Voici un exemple qui illustre ce principe :

public class Main {
	public static void main(String[] argv) throws Exception {
	StringBuilder str = new StringBuilder("ABCDE");
	str.reverse();
	System.out.println(str);
	}
}
java

Le résultat généré est :

EDCBA
java

delete()

La méthode delete() avec String­Buil­der Java permet de supprimer la totalité ou une partie d’un string. La méthode delete() avec String­Buil­der Java permet de supprimer la totalité ou une partie d’un string. Ceci est également défini par beginIndexet endIndex. En voici un exemple :

public class Main {
	public static void main(String[] argv) throws Exception {
	StringBuilder str = new StringBuilder("ABCDE");
	str.delete(1,4);
	System.out.println(str);
	}
}
java

Nous obtenons la sortie suivante :

AE
java

capacity()

La méthode capacity() vous donne le nombre maximum actuel de ca­rac­tères du String­Buil­der Java qui est nor­ma­le­ment de 16. Une aug­men­ta­tion de cette valeur se fait selon la formule « longueur de ca­rac­tères actuelle * 2 + 2 ». S’il était de 16 jusqu’à présent, il sera multiplié par deux (32) et augmenté de deux (34). Voici l’exemple cor­res­pon­dant :

public class Main {
	public static void main(String[] argv) throws Exception {
	StringBuilder str = new StringBuilder();
System.out.println(str.capacity());
str.append("ABCDE");
System.out.println(str.capacity());
	str.append("Ceci est un autre exemple");
	System.out.println(str.capacity());
	}
}
java

La sortie générée est la suivante :

16
16
34
java

ensureCapacity()

La méthode ensureCapacity() s’assure que le nombre de ca­rac­tères dis­po­nibles cor­res­pond au moins à une valeur définie. Si ce n’est pas le cas, la capacité sera à nouveau augmentée selon la formule « longueur de ca­rac­tères actuelle * 2 + 2 ». C’est ce qui apparaît dans l’exemple suivant :

public class Main {
	public static void main(String[] argv) throws Exception {
	StringBuilder str = new StringBuilder();
System.out.println(str.capacity());
str.append("ABCDE");
System.out.println(str.capacity());
	str.append("Ceci est un autre exemple");
	System.out.println(str.capacity());
	str.ensureCapacity(5);
	System.out.println(str.capacity());
	str.ensureCapacity(40);
	System.out.println(str.capacity());
	}
}
java

En exécutant ce code, on obtient la sortie suivante :

16
16
34
34
70
java

La valeur par défaut (16) a d’abord été prise en compte deux fois, puis deux fois la valeur doublée plus deux (34), et enfin la valeur a encore été doublée et augmentée de deux (70).

Aller au menu principal