J'ai écrit un programme Java dans lequel, je dois ajouter une chaîne
" u13a2"
à un existant "u1234 u12de u1386 ... u15a3"
.
Donc, progressivement, la chaîne devient de plus en plus longue. J'ai trouvé que le temps passé sur chaque ajout devenait de plus en plus long. Y a-t-il moyen d'améliorer cela dans une certaine mesure?
L'implémentation qui m'est venue à l'esprit comprend:
unicodeArray += " "+unicode;
ou
unicodeArray = unicodeArray.concat(" "+unicode);
Ils ont donné une performance similaire. Je pense que la cause principale de ces mauvaises performances est le type spécial String
. Il crée un nouvel objet pour chaque affectation. Si vous le pensez aussi, cela signifie-t-il que je ferais mieux d'utiliser un autre type, tel que tableau d'octets?
Utilisez StringBuilder
class. C'est plus efficace dans ce que vous essayez de faire.
Vous devez utiliser la classe StringBuilder .
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("Some text");
stringBuilder.append("Some text");
stringBuilder.append("Some text");
String finalString = stringBuilder.toString();
De plus, veuillez visiter:
Vous pouvez utiliser StringBuffer
ou StringBuilder
pour cela. Les deux sont pour la manipulation dynamique des chaînes. StringBuffer
est thread-safe alors que StringBuilder
ne l’est pas.
Utilisez StringBuffer
dans un environnement multi-thread. Mais si c'est un seul thread, StringBuilder
est recommandé et c'est beaucoup plus rapide que StringBuffer
.
- À chaque fois que vous ajoutez ou modifiez une modification, un nouvel objet String
est créé.
- Donc, utilisez la méthode append()
de StringBuilder
(si la sécurité du fil est pas important), sinon utilisez StringBuffer
(si la sécurité du fil est important.), Ce sera un moyen efficace de le faire.
Java.lang.StringBuilder. Utilisez int constructeur pour créer une taille initiale.