Java - Gerar seqüência aleatória

Java - Gerar seqüência aleatória

Neste artigo, vamos mostrar como gerar uma String aleatória em Java - primeiro usando as bibliotecas Java padrão e usandothe Apache Commons Lang library.

Este artigo faz parte dethe “Java – Back to Basic” series aqui no exemplo.

1. Gerar string aleatória sem limites com Java simples

Vamos começar de forma simples e gerar uma string aleatória limitada a 7 caracteres:

@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);
}

Lembre-se de que a nova String não será remotamente alfanumérica.

Leitura adicional:

Calculadora eficiente de frequência de palavras em Java

Explore várias maneiras de contar palavras em Java e veja como elas funcionam.

Read more

Java - Aleatório Longo, Flutuante, Inteiro e Duplo

Aprenda a gerar números aleatórios em Java - sem limites e dentro de um determinado intervalo.

Read more

Guia para o conjunto de strings Java

Aprenda como a JVM otimiza a quantidade de memória alocada para o armazenamento de String no Java String Pool.

Read more

2. Gerar String Random Bounded com Plain Java

A seguir - vamos ver como criar uma String aleatória mais restrita; vamos gerar uma string aleatória usando letras do alfabeto minúsculas e um comprimento definido:

@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. Gerar String Aleatória Limitada com Apache Commons Lang

A biblioteca Commons Lang do Apache ajuda muito na geração aleatória de String. Vamos dar uma olhada emgenerating 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);
}

Então - em vez de todo o código de baixo nível no exemplo Java - este é feito com uma única linha.

4. Gere string alfabética com Apache Commons Lang

Outro exemplo muito simples - desta vez, uma String delimitada com apenas caracteres alfabéticos, mas sem passar sinalizadores booleanos para a API:

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

    System.out.println(generatedString);
}

5. Gere string alfanumérica com Apache Commons Lang

E finalmente - a mesma String aleatória, mas desta vez - numérica:

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

    System.out.println(generatedString);
}

E aí está -creating bounded and unbounded Strings com Java puro ou a Apache Commons Library.

6. Conclusão

Através de diferentes métodos de implementação, fomos capazes de gerar cadeias vinculadas e não acopladas, usando Java simples ou a Biblioteca Apache Commons.

A implementação de todos esses exemplos e snippets pode ser encontrada emGitHub project. Este é um projeto baseado em Maven, portanto deve ser fácil importar e executar.