web-dev-qa-db-fra.com

En Java, comment ajouter une chaîne plus efficacement?

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?

31
JackWM

Utilisez StringBuilder class. C'est plus efficace dans ce que vous essayez de faire. 

28
Pradeep Pati

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

8

- À 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.

2
Kumar Vivek Mitra

Java.lang.StringBuilder. Utilisez int constructeur pour créer une taille initiale.

0
Jeff Miller