Java - генерировать случайную строку

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 и посмотрите, как они работают.

Read more

Java - случайные длинные, плавающие, целые и двойные

Узнайте, как генерировать случайные числа в Java - как неограниченные, так и в пределах заданного интервала.

Read more

Руководство по Java String Pool

Узнайте, как JVM оптимизирует объем памяти, выделяемой для хранения строк в пуле строк Java.

Read more

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, поэтому его легко импортировать и запускать.