Java - Генерация случайной строки
В этой статье мы собираемся показать, как сгенерировать случайную строку в Java - сначала с помощью стандартных библиотек Java иthe Apache Commons Lang library.
Эта статья является частьюthe “Java – Back to Basic” series здесь для примера.
1. Генерация случайной неограниченной строки с помощью простой Java
Давайте начнем с простого и сгенерируем случайную строку, ограниченную 7 символами:
@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);
}
Имейте в виду, что новая строка не будет ничего буквенно-цифровой.
Дальнейшее чтение:
Эффективный калькулятор частоты слов в Java
Изучите различные способы подсчета слов в Java и посмотрите, как они работают.
Java - случайные длинные, плавающие, целые и двойные
Узнайте, как генерировать случайные числа в Java - как неограниченные, так и в пределах заданного интервала.
Руководство по Java String Pool
Узнайте, как JVM оптимизирует объем памяти, выделяемой для хранения строк в пуле строк Java.
2. Генерация случайной ограниченной строки с помощью простой Java
Далее - давайте посмотрим на создание более ограниченной случайной строки; мы собираемся сгенерировать случайную строку из букв нижнего регистра и заданной длины:
@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. Создание ограниченной случайной строки с помощью Apache Commons Lang
Библиотека Commons Lang от Apache очень помогает при генерации случайных строк. Давайте посмотрим на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);
}
Таким образом - вместо всего низкоуровневого кода в примере с Java - этот делается простым однострочником.
4. Создание буквенной строки с помощью Apache Commons Lang
Другой очень простой пример - на этот раз ограниченная строка с только буквенными символами, но без передачи логических флагов в API:
@Test
public void givenUsingApache_whenGeneratingRandomAlphabeticString_thenCorrect() {
String generatedString = RandomStringUtils.randomAlphabetic(10);
System.out.println(generatedString);
}
5. Создание буквенно-цифровой строки с помощью Apache Commons Lang
И наконец - та же самая случайная ограниченная строка, но на этот раз - числовая:
@Test
public void givenUsingApache_whenGeneratingRandomAlphanumericString_thenCorrect() {
String generatedString = RandomStringUtils.randomAlphanumeric(10);
System.out.println(generatedString);
}
И вот он -creating bounded and unbounded Strings либо с простой Java, либо с библиотекой Apache Commons.
6. Заключение
Благодаря различным методам реализации мы смогли генерировать связанные и несвязанные строки, используя простую Java или библиотеку Apache Commons.
Реализацию всех этих примеров и фрагментов можно найти вGitHub project. Это проект на основе Maven, поэтому его легко импортировать и запускать.