C'est un mémo pour moi pour étudier
--À propos de la différence entre String et StringBuilder en premier lieu --À propos de stringsbuilder est égal à
La conclusion est --StringBuilder est recommandé lors de la jonction et du retournement
Récemment, j'étudie la grammaire Java en utilisant le problème AtCoder.
ABC146 F -Sugoroku C'est une histoire qui commence lorsque je suis tombé sur quelque chose appelé StringBuilder lorsque je voulais inverser String lorsque je suis tombé sur.
Vous pouvez facilement comprendre cela en regardant le lien ci-dessous. https://qiita.com/shunsuke227ono/items/e8f34c67dcffa0fa28ad https://www.javadrive.jp/start/stringbuilder/
Pour résumer brièvement
--String est immuable et StringBuilder est modifiable --String peut également être décrit comme mutable dans le code (S = S + "a" etc.) --StringBuilder est plus efficace en termes de mémoire et de temps pour ajouter et insérer des chaînes
Il semble donc que l'utilisation de StringBuilder soit recommandée, mais ** je n'ai vu aucun avantage du côté String **, alors? Est-ce un enfant qui n'a pas besoin de String? (Probablement pas).
――― 02/02/2020 postscript ――― (Le titre a également été changé) Il a souligné dans les commentaires et introduit ↓ de bons liens ↓. https://qiita.com/yoshi389111/items/67354ba33f9271ef2c68
Il ne semble y avoir aucun problème avec l'opérateur + lors de la combinaison de constantes de chaîne ou lors de la combinaison avec une instruction. Si vous souhaitez inverser la chaîne de caractères comme cette fois, il semble préférable d'utiliser StringBuilder ou List \ <Character >.
Ajouté parce que j'ai rencontré un problème et des connaissances différents
ABC159 B - String Palindrome Juger si la chaîne de caractères est une circulaire (+ α). J'ai écrit le code avec l'idée de savoir si un StringBuilder et sa version inversée sont identiques.
Code de jugement circulaire (faux)
static boolean checkKaibun(String str){
StringBuilder t = new StringBuilder(str);
return (t.equals(t.reverse()));
}
Cela revient toujours vrai dans la mesure où je l'ai essayé moi-même. La cause est que la méthode StringBuilder equals n'a pas été remplacée.
La solution est
Si vous utilisez beaucoup de comparaisons StringBuilder dans votre code, ce serait 1, mais il semble que vous deviez également remplacer la méthode hashCode (voir ci-dessous), ce qui est ennuyeux.
référence https://www.atmarkit.co.jp/ait/articles/0702/20/news103.html
La mise en œuvre en 2 est la suivante.
Code de jugement circulaire
static boolean checkKaibun(String str){
StringBuilder t = new StringBuilder(str);
return (str.equals(t.reverse().toString()));
}
Recommended Posts