Moyen Simple de répéter une Chaîne de caractères en java

Je suis à la recherche d'un simple communes de la méthode ou de l'opérateur qui me permet de répéter une Chaîne de caractères n fois. Je sais que je pourrais écrire cela à l'aide d'une boucle for, mais je veux éviter, pour des boucles à chaque fois que nécessaire, et une simple méthode directe doit exister quelque part.

String str = "abc";
String repeated = str.repeat(3);

repeated.equals("abcabcabc");

Liés à:

répétez chaîne javascript
Créer NSString en répétant une autre chaîne de caractères en un nombre donné de fois

Édité

J'essaie d'éviter les boucles for, quand ils ne sont pas tout à fait nécessaire car:

  1. Ils ajoutent au nombre de lignes de code, même si elles sont planquées dans une autre fonction.

  2. Quelqu'un à la lecture de mon code pour comprendre ce que je fais en ce que pour la boucle. Même si il est commenté et a de sens des noms de variables, ils en ont encore pour s'assurer qu'il n'est pas de faire quoi que ce soit "intelligent".

  3. Programmeurs aiment mettre des choses intelligentes dans les boucles for, même si j'écris c'est pour "faire uniquement ce pour quoi il est destiné à faire", cela n'empêche pas quelqu'un à venir le long et en ajoutant quelques autres intelligent "fix".

  4. Ils sont très souvent facile de se tromper. Pour les boucles impliquant des indices tendent à générer par un bugs.

  5. Pour des boucles souvent de réutiliser les mêmes variables, ce qui augmente les chances de vraiment difficile de trouver de délimitation de l'étendue de bugs.

  6. Pour les boucles d'augmenter le nombre de places d'un bug hunter a regarder.

  • Je comprends que pour les boucles peuvent causer des problèmes. Mais vous ne devriez pas essayer de l'éviter pour les boucles "à tout prix" parce que si il vous en coûte de la lisibilité, de la maintenabilité et de la vitesse, vous êtes d'être contre-productif. C'est l'un de ces cas.
  • Avec ces préoccupations, envisager d'avoir exhaustive unittests pour votre code. Cela vous permet d'afficher uniquement l'unité de test lorsque la documentation est nécessaire.
  • "Ils ajoutent au nombre de lignes de code, même si elles sont planquées dans une autre fonction"...wow, juste wow. Big-O, pas la Ldc
  • Je suis pour éviter les boucles dans les situations où il m'en coûte la lisibilité et la maintenabilité. Je considère que la vitesse comme le moins important (un non-problème en fait). Je pense que pour les boucles sont surexploitées et je suis en train d'apprendre à utiliser uniquement pour les boucles, lorsqu'elles sont nécessaires et non pas comme une solution par défaut.
  • Je ne dis pas de performance ou asymptotique des avantages. Plutôt de dire qu'en écrivant moins de code, et à l'aide des fonctions de la bibliothèque plutôt que de réinventer la roue-je réduire le bug de la surface(Lignes de Code), tout en augmentant la lisibilité. Deux bonnes choses, je suis sûr que vous serez d'accord.
  • Ce sont de bonnes choses, mais ils ne suivent pas toujours de l'aide des fonctions de la bibliothèque. Ce que les gens ont à vous dire, c'est que l'utilisation inappropriée des fonctions de la bibliothèque (par exemple, "en évitant les boucles à tout prix") peut diminuer la lisibilité, augmenter le bug de la surface [*], et de faire votre demande catastrophiquement lent. [ Les bibliothèques peuvent avoir des bugs trop!]
  • C , Oh certes, je suis complètement d'accord avec une chose que vous venez de dire! Quand je dis "éviter les boucles à tout prix", j'exagère ma position un peu pour l'effet dramatique. Pour les boucles sont nécessaires et bon, mais je ne vois une surutilisation dans mon code et d'autres. Je ne fais qu'essayer d'améliorer mon style.
  • pour l'affichage des années plus tard.Je trouve cette question de manière appropriée. Si elle est insérée dans une méthode, les arguments doivent être testés (times>=0), les erreurs jeté etc.Cela ajoute de la robustesse, mais aussi des lignes de code à lire. Répéter une chaîne de caractères est quelque chose d'équivoque.Qui lit le code sait exactement ce qu'est une chaîne de caractères.répétez le fait, même sans une ligne de commentaire ou de javadoc.Si nous utilisons un stable de la bibliothèque, est raisonnable de penser qu'une simple fonction n'a pas de bugs,MAIS introduit une certaine forme de "robustesse" de vérifier que nous avons encore besoin de s'inquiéter.Si je pouvais demander 10 améliorations, ce (genre de) les choses seraient un.
  • En regardant en arrière à cette question, je me rends compte d'un problème de plus avec des boucles for. Ils spécifier l'ordre dans lequel les actions doivent être effectuées lorsque la plupart du temps, l'ingénieur ne veut effectuer une action sur chaque élément d'une liste (quel que soit l'ordre). Cette dépendance de l'ordre rend beaucoup plus difficile pour les compilateurs pour paralléliser le code. Je pense que le python fonction map a droite de celui-ci: docs.python.org/library/functions.html#map
  • Soulève pitchfork en total accord. "Mort pour la boucle, longue vie à la lisibilité"!
  • une bonne raison pour éviter les boucles, c'est que java a déjà introduit des itérateurs à la seule portée de soulager les boucles de déclaration.Il a été un lourd effort à cette fin.L'amélioration de la Chaîne de l'API un peu permettrait l'élimination complète de "évident" boucles de code à un coût très faible.Et une beaucoup plus grande (encore sous-estimés) des prestations.Le temps qu'il faut pour comprendre le plus simple boucle est beaucoup plus grande que le temps passé dans la lecture de "répéter" mot. String[] x = {"pensez?", "vous", "ne"}; for (int i=x.longueur-1;i>=0;i--) { System.out.println(x[i]); }
  • l'ordre la question est correct, mais je pense que vous ne pouvez pas tourner à un langage procédural dans déclaratif à un "au cas où". Je ne sais pas si vous vous sentez détendu lors de l'itération de la collection et la suppression de certains d'entre eux parce que "vous ne voulez effectuer une action sur chaque élément de" partir à la mise en œuvre de bibliothèque "de ne pas faire de gâchis". Peut-être l'étude de l'API plus en profondeur. Si vous n'avait pas le temps, vous avez probablement choisir une preuve de l'échec approche procédurale comme un downto-retrait 🙂
  • cependant, je pense que plusieurs de ces raisons sont assez "strict". peut-être assez pour commencer une JCP demande. ne serait-il pas merveilleux?
  • "Intelligents" code doit être évitée. for boucles ne devrait pas. Rendre le code à faire ce à quoi il ressemble, et d'utiliser plusieurs lignes si nécessaire. Votre compilateur va faire tout petit et astucieux - hors de la vue.
  • code devrait être évité, je suis d'accord. Mais pour les boucles sont "intelligents" code que vous avez tout juste d'être utilisé pour eux. Considérer que la boucle for s'appuie sur une relation mathématique entre la façon dont nous stocker des chaînes de caractères dans les tableaux (assez arbitraire, dépend de la machine au choix) et une périodiquement l'augmentation de nombre entier. Avant de vous êtes en désaccord essayez d'expliquer comment vous pouvez vous répéter une chaîne à l'aide de boucles' à un non-programmeur.
  • va ici: "nous magasin de la chaîne comme une liste de personnages, chacun dans une boîte numérotée. Si j'ai besoin d'une chaîne de caractères qui est de 100 de long, j'ai mis un personnage en zone 1, zone 2, tout le chemin jusqu'à me rendre à la boîte de 100. Puis-je arrêter d'ajouter des caractères. "Que semble décrire la boucle assez bien. J'ai décidé de ne pas expliquer le "décalage de zéro", car c'est pas pertinente pour l'explication de la non-programmeur.
  • Si vous êtes sur Java 11, vous pouvez utiliser String::repeat - voir cette réponse.