Java - Générer une chaîne aléatoire

Java - Générer une chaîne aléatoire

Dans cet article, nous allons montrer comment générer une chaîne aléatoire en Java - d'abord en utilisant les bibliothèques Java standard et en utilisantthe Apache Commons Lang library.

Cet article fait partie dethe “Java – Back to Basic” series ici par exemple.

1. Générer une chaîne aléatoire non bornée avec Java brut

Commençons simplement et générons une chaîne aléatoire limitée à 7 caractères:

@Test
public void givenUsingPlainJava_whenGeneratingRandomStringUnbounded_thenCorrect() {
    byte[] array = new byte[7]; // length is bounded by 7
    new Random().nextBytes(array);
    String generatedString = new String(array, Charset.forName("UTF-8"));

    System.out.println(generatedString);
}

Gardez à l'esprit que la nouvelle chaîne ne sera pas alphanumérique à distance.

Lectures complémentaires:

Calculateur de fréquence de mots efficace en Java

Explorez différentes manières de compter les mots en Java et voyez leurs performances.

Read more

Java - Aléatoire Long, Float, Integer et Double

Apprenez à générer des nombres aléatoires en Java, sans limite ni dans un intervalle donné.

Read more

Guide du pool de chaînes Java

Découvrez comment la machine virtuelle Java optimise la quantité de mémoire allouée au stockage de chaînes dans le pool de chaînes Java.

Read more

2. Générer une chaîne délimitée aléatoire avec Java brut

Ensuite, voyons comment créer une chaîne aléatoire plus contrainte; nous allons générer une chaîne aléatoire en utilisant des lettres alphabétiques minuscules et une longueur définie:

@Test
public void givenUsingPlainJava_whenGeneratingRandomStringBounded_thenCorrect() {

    int leftLimit = 97; // letter 'a'
    int rightLimit = 122; // letter 'z'
    int targetStringLength = 10;
    Random random = new Random();
    StringBuilder buffer = new StringBuilder(targetStringLength);
    for (int i = 0; i < targetStringLength; i++) {
        int randomLimitedInt = leftLimit + (int)
          (random.nextFloat() * (rightLimit - leftLimit + 1));
        buffer.append((char) randomLimitedInt);
    }
    String generatedString = buffer.toString();

    System.out.println(generatedString);
}

3. Générer une chaîne aléatoire délimitée avec Apache Commons Lang

La bibliothèque Commons Lang d’Apache aide beaucoup à la génération aléatoire de chaînes. Jetons un œil àgenerating a bounded String using only letters:

@Test
public void givenUsingApache_whenGeneratingRandomStringBounded_thenCorrect() {

    int length = 10;
    boolean useLetters = true;
    boolean useNumbers = false;
    String generatedString = RandomStringUtils.random(length, useLetters, useNumbers);

    System.out.println(generatedString);
}

Donc, au lieu de tout le code de bas niveau de l'exemple Java, celui-ci est fait avec une simple ligne.

4. Générer une chaîne alphabétique avec Apache Commons Lang

Un autre exemple très simple - cette fois, une chaîne limitée contenant uniquement des caractères alphabétiques, mais sans passer d'indicateur booléen à l'API:

@Test
public void givenUsingApache_whenGeneratingRandomAlphabeticString_thenCorrect() {
    String generatedString = RandomStringUtils.randomAlphabetic(10);

    System.out.println(generatedString);
}

5. Générer une chaîne alphanumérique avec Apache Commons Lang

Et enfin - la même chaîne liée aléatoire mais cette fois-ci - numérique:

@Test
public void givenUsingApache_whenGeneratingRandomAlphanumericString_thenCorrect() {
    String generatedString = RandomStringUtils.randomAlphanumeric(10);

    System.out.println(generatedString);
}

Et là vous l'avez -creating bounded and unbounded Strings avec Java pur ou la bibliothèque Apache Commons.

6. Conclusion

Grâce à différentes méthodes de mise en œuvre, nous avons pu générer des chaînes liées et non liées à l'aide de Java pur ou de la bibliothèque Apache Commons.

L'implémentation de tous ces exemples et extraits peut être trouvée dans lesGitHub project. Ceci est un projet basé sur Maven, il devrait donc être facile à importer et à exécuter.