- Как в Java сгенерировать случайную строку
- Генерация случайной строки неограниченного размера с помощью Java
- Генерация случайной строки ограниченного размера с помощью Java
- Генерация случайной буквенно-цифровой строки с помощью Java 8
- Генерация ограниченной случайной строки с помощью Apache Commons Lang
- Генерация алфавитной строки с помощью Apache Commons Lang
- Генерация буквенно-цифровой строки с помощью Apache Commons Lang
- Заключение
- Java – Генерация Случайной Строки
- 1. Сгенерируйте Случайную Неограниченную Строку С Помощью Простой Java
- Дальнейшее чтение:
- Эффективный калькулятор частоты слов на Java
- Java – Случайные длинные, Плавающие, целочисленные и двойные
- Руководство по пулу строк Java
- 2. Сгенерируйте Случайную Ограниченную Строку С Помощью Простой Java
- 3. Сгенерируйте Случайную Алфавитную Строку С Помощью Java 8
- 4. Сгенерируйте Случайную Буквенно-Цифровую Строку С Помощью Java 8
- 5. Сгенерируйте Ограниченную Случайную Строку С Помощью Apache Commons Lang
- 6. Создайте Алфавитную Строку С Помощью Apache Commons Lang
- 7. Сгенерируйте Буквенно-Цифровую Строку С Помощью Apache Commons Lang
- 8. Заключение
- Читайте ещё по теме:
- How can I generate random strings in java? [duplicate]
- How to generate a random String in Java [duplicate]
Как в Java сгенерировать случайную строку
В этом руководстве узнаем, как генерировать случайную строку в Java, сначала используя стандартные библиотеки Java, затем используя вариант Java 8 и, наконец, используя библиотеку Apache Commons Lang.
Генерация случайной строки неограниченного размера с помощью Java
Начнем с простого и сгенерируем случайную строку, ограниченную 7 символами:
@Test public void givenUsingPlainJava_whenGeneratingRandomStringUnbounded_thenCorrect() < byte[] array = new byte[7]; // длина ограничена 7 new Random().nextBytes(array); String generatedString = new String(array, Charset.forName("UTF-8")); System.out.println(generatedString); >
Имейте в виду, что новая строка не будет буквенно-цифровой.
Генерация случайной строки ограниченного размера с помощью Java
Посмотрим на создание более ограниченной случайной строки.
Сгенерируем случайную строку, используя строчные буквы алфавита и заданную длину:
@Test public void givenUsingPlainJava_whenGeneratingRandomStringBounded_thenCorrect() < int leftLimit = 97; // буква 'a' int rightLimit = 122; // буква '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); >
4. Генерация случайной строки из букв с помощью Java 8
Воспользуемся Random.ints, добавленным в JDK 8, для генерации алфавитной строки:
@Test public void givenUsingJava8_whenGeneratingRandomAlphabeticString_thenCorrect() < int leftLimit = 97; // буква 'a' int rightLimit = 122; // буква 'z' int targetStringLength = 10; Random random = new Random(); String generatedString = random.ints(leftLimit, rightLimit + 1) .limit(targetStringLength) .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append) .toString(); System.out.println(generatedString); >
Генерация случайной буквенно-цифровой строки с помощью Java 8
Затем можно расширить набор символов, чтобы получить буквенно-цифровую строку:
@Test public void givenUsingJava8_whenGeneratingRandomAlphanumericString_thenCorrect() < int leftLimit = 48; // цифра '0' int rightLimit = 122; // буква 'z' int targetStringLength = 10; Random random = new Random(); String generatedString = random.ints(leftLimit, rightLimit + 1) .filter(i ->(i = 65) && (i = 97)) .limit(targetStringLength) .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append) .toString(); System.out.println(generatedString); >
Мы использовали описанный выше метод фильтрации, чтобы пропустить символы Unicode между 65 и 90, чтобы избежать появления символов вне допустимого диапазона.
Генерация ограниченной случайной строки с помощью Apache Commons Lang
Библиотека Commons Lang от Apache очень помогает при генерации случайных строк. Посмотрим на создание ограниченной строки, используя только буквы:
@Test public void givenUsingApache_whenGeneratingRandomStringBounded_thenCorrect()
Таким образом, вместо всего низкоуровневого кода в примере с Java здесь используется простой однострочный код.
Генерация алфавитной строки с помощью Apache Commons Lang
Вот еще один очень простой пример, на этот раз ограниченная строка только с буквенными символами, но без передачи логических флагов в API:
@Test public void givenUsingApache_whenGeneratingRandomAlphabeticString_thenCorrect()
Генерация буквенно-цифровой строки с помощью Apache Commons Lang
Наконец, получим ту же самая случайную ограниченную строку, но на этот раз числовую:
@Test public void givenUsingApache_whenGeneratingRandomAlphanumericString_thenCorrect()
Мы создали ограниченные и неограниченные строки либо с помощью Java, либо с Java 8, либо с библиотекой Apache Commons.
Заключение
Благодаря различным способам реализации мы смогли сгенерировать ограниченные и неограниченные строки, используя обычную Java, вариант Java 8 или библиотеку Apache Commons.
В этих примерах использовали java.util.Random, но стоит упомянуть, что она не является криптографически безопасной. Рассмотрите возможность использования java.security.SecureRandom вместо приложений, чувствительных к безопасности.
Реализацию всех этих примеров и фрагментов можно найти в проекте GitHub. Это проект на основе Maven, поэтому его легко импортировать и запускать.
Java – Генерация Случайной Строки
Генерируйте ограниченные и неограниченные случайные строки, используя простую Java и библиотеку Apache Commons Lang.
В этом уроке мы покажем, как сгенерировать случайную строку в Java – сначала с помощью стандартных библиотек Java, затем с помощью варианта Java 8 и, наконец, с помощью библиотеки Apache Commons Lang .
Эта статья является частью серии “Java – Back to Basic” здесь, на Baeldung.
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
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. Сгенерируйте Случайную Алфавитную Строку С Помощью Java 8
Теперь давайте использовать Random.ints – добавлено в JDK 8 – для создания алфавитной строки:
@Test public void givenUsingJava8_whenGeneratingRandomAlphabeticString_thenCorrect() < int leftLimit = 97; // letter 'a' int rightLimit = 122; // letter 'z' int targetStringLength = 10; Random random = new Random(); String generatedString = random.ints(leftLimit, rightLimit + 1) .limit(targetStringLength) .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append) .toString(); System.out.println(generatedString); >
4. Сгенерируйте Случайную Буквенно-Цифровую Строку С Помощью Java 8
А затем мы можем расширить наш набор символов, чтобы получить буквенно-цифровую строку :
@Test public void givenUsingJava8_whenGeneratingRandomAlphanumericString_thenCorrect() < int leftLimit = 48; // numeral '0' int rightLimit = 122; // letter 'z' int targetStringLength = 10; Random random = new Random(); String generatedString = random.ints(leftLimit, rightLimit + 1) .filter(i ->(i = 65) && (i = 97)) .limit(targetStringLength) .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append) .toString(); System.out.println(generatedString); >
Обратите внимание на использование метода filter выше, чтобы исключить символы Юникода между 65 и 90 – чтобы избежать символов вне диапазона.
5. Сгенерируйте Ограниченную Случайную Строку С Помощью Apache Commons Lang
Библиотека Commons Lang от Apache очень помогает при генерации случайных строк. Давайте посмотрим на создание ограниченной строки с использованием только букв :
@Test public void givenUsingApache_whenGeneratingRandomStringBounded_thenCorrect()
Поэтому – вместо всего низкоуровневого кода в примере Java-это делается с помощью простой однострочной строки.
6. Создайте Алфавитную Строку С Помощью Apache Commons Lang
Еще один очень простой пример – на этот раз ограниченная Строка только с буквенными символами, но без передачи логических флагов в API:
@Test public void givenUsingApache_whenGeneratingRandomAlphabeticString_thenCorrect()
7. Сгенерируйте Буквенно-Цифровую Строку С Помощью Apache Commons Lang
И, наконец, – та же случайная ограниченная Строка , но на этот раз – числовая:
@Test public void givenUsingApache_whenGeneratingRandomAlphanumericString_thenCorrect()
И вот у нас есть это – создание ограниченных и неограниченных строк с помощью простой Java, варианта Java 8 или библиотеки Apache Commons.
8. Заключение
С помощью различных методов реализации мы смогли генерировать связанные и несвязанные строки, используя обычную Java, вариант Java 8 или библиотеку Apache Commons.
В этих примерах Java мы использовали java.util.Random , но один момент, о котором стоит упомянуть, заключается в том, что он не является криптографически безопасным. Рассмотрите возможность использования java.security.SecureRandom вместо этого для приложений, чувствительных к безопасности.
Реализацию всех этих примеров и фрагментов можно найти в проекте GitHub . Это проект на основе Maven, поэтому его должно быть легко импортировать и запускать.
Читайте ещё по теме:
How can I generate random strings in java? [duplicate]
Here are the examples to generate two types of strings.
import java.security.SecureRandom; import java.math.BigInteger; public final class SessionIdentifierGenerator < private SecureRandom random = new SecureRandom(); public String nextSessionId() < return new BigInteger(130, random).toString(32); >>
OUTPUT: ponhbh78cqjahls5flbdf4dlu4
String uuid = UUID.randomUUID().toString(); System.out.println("uuid http://download.oracle.com/javase/1,5.0/docs/api/java/util/UUID.html" rel="nofollow">here