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