1. Modification des chaînes

En Java, les chaînes sont des objets immuables. Cela a été fait pour rendre la classe String hautement optimisée et pour lui permettre d'être utilisée partout. Par exemple, seuls les types immuables sont recommandés pour une utilisation en tant que clés dans la collection HashMap .

Cependant, des situations surviennent souvent lorsque les programmeurs trouveraient plus pratique que la Stringclasse soit modifiable. Ils veulent une classe qui ne crée pas de nouvelle sous-chaîne chaque fois qu'une de ses méthodes est appelée.

Eh bien, supposons que nous ayons une très grande chaîne et que nous devions fréquemment ajouter quelque chose à la fin. Dans ce cas, même une collection de caractères ( ArrayList<Character>) peut être plus efficace que la recréation et la concaténation constantes d'objets String.

C'est précisément pourquoi un type de type String qui peut être modifié a été ajouté au langage Java. Il s'appelle StringBuilder.

Création d'un objet

Pour créer un StringBuilderobjet basé sur une chaîne existante, vous devez exécuter une instruction telle que :

StringBuilder name = new StringBuilder(string);

Pour créer une chaîne mutable vide, vous devez utiliser une instruction comme celle-ci :

StringBuilder name = new StringBuilder();

Liste des méthodes

La StringBuilderclasse a deux douzaines de méthodes utiles. Voici les plus importants :

Méthode Description
StringBuilder append(obj)
Convertit l'objet passé en chaîne et l'ajoute à la chaîne actuelle
StringBuilder insert(int index, obj)
Convertit l'objet passé en chaîne et l'insère dans la chaîne actuelle
StringBuilder replace(int start, int end, String str)
Remplace la partie de la chaîne spécifiée par l'intervalle début..fin par la chaîne transmise
StringBuilder deleteCharAt(int index)
Supprime le caractère avec l'index spécifié de la chaîne
StringBuilder delete(int start, int end)
Supprime les caractères dans l'intervalle spécifié de la chaîne
int indexOf(String str, int index)
Recherche une sous-chaîne dans la chaîne courante
int lastIndexOf(String str, int index)
Recherche une sous-chaîne dans la chaîne courante, en commençant par la fin
char charAt(int index)
Renvoie le caractère de la chaîne à l'index passé
String substring(int start, int end)
Renvoie la sous-chaîne définie par l'intervalle spécifié
StringBuilder reverse()
Inverse la chaîne actuelle.
void setCharAt(int index, char)
Remplace le caractère à l'index spécifié par le caractère passé
int length()
Renvoie la longueur de la chaîne en caractères

Voici une brève description de chaque méthode


2. Description des méthodes :

Ajout à une chaîne

Pour ajouter quelque chose à une chaîne mutable ( StringBuilder), utilisez la append()méthode. Exemple:

Code Description
StringBuilder builder = new StringBuilder("Hi");
builder.append("Bye");
builder.append(123);
Hi
HiBye
HiBye123

Conversion en chaîne standard

Pour convertir un StringBuilderobjet en objet String, il vous suffit d'appeler sa toString()méthode. Exemple

Code Sortir
StringBuilder builder = new StringBuilder("Hi");
builder.append(123);
String result = builder.toString();
System.out.println(result);
Hi123

Comment supprimer un personnage ?

Pour supprimer un caractère dans une chaîne mutable, vous devez utiliser la deleteCharAt()méthode. Exemple:

Code Sortir
StringBuilder builder = new StringBuilder("Hello");
builder.deleteCharAt(2);
String result = builder.toString();
System.out.println(result);
Helo

Comment remplacer une partie d'une chaîne par une autre chaîne ?

Pour cela, il y a la replace(int begin, int end, String str)méthode. Exemple:

Code Sortir
StringBuilder builder = new StringBuilder("Mellow");
builder.replace(2, 5, "Hello!");
String result = builder.toString();
System.out.println(result);
MeHello!w


3. Exemples utiles de travail avec des chaînes

Comment inverser une chaîne ?

Il existe une méthode spéciale pour le faire — reverse(); Exemple:

Code Sortir
String str = "Hello";
StringBuilder builder = new StringBuilder(str);
builder.reverse();
String result = builder.toString();
System.out.println(result);
olleH

StringBufferclasse

Il existe une autre classe — StringBuffer, qui est un analogue de la StringBuilderclasse, mais ses méthodes sont marquées avec le synchronizedmodificateur. Cela signifie que l' StringBufferobjet est accessible simultanément à partir de plusieurs threads.

Mais c'est beaucoup plus lent que StringBuilder. Vous aurez peut-être besoin de cette classe lorsque vous commencerez à explorer activement le multithreading dans la quête Java Multithreading .