[Java] 중복되지 않는 랜덤 문자열(난수) 생성하기

apache commons-lang 라이브러리와 Java Set을 이용하여 원하는 개수의 랜덤 문자열(난수)을 생성할 수 있습니다.


1. apache commons-lang 의존성 추가

// build.gradle

implementation 'org.apache.commons:commons-lang3:3.12.0'


2. Set 사용 중복 제거

  – Set은 중복이 불가능한 것을 이용

  – 중복되면 Set에 추가되지 않고 set.size() 증가하지 않기 때문에 원하는 개수(100개) 생성 가능

// 100개 난수 생성
Set<String> set = new HashSet<>();
while (set.size() < 100) {
    String randomText = RandomStringUtils.randomAlphabetic(4).toUpperCase() + String.format("%04d", 유니크값);
    set.add(randomText);
}
List<String> randomTextList = new ArrayList<>(set);


3. RandomStringUtils.random 함수

  • RandomStringUtils.random(int count)
    • 길이가 count인 임의의 문자를 생성합니다.
  • RandomStringUtils.random(int count, boolean letters, boolean numbers)
    • letters, numbers 는 true일 경우 문자나 숫자만으로 생성하는 파라미터 입니다.
  • RandomStringUtils.random(int count, int start, int end, boolean letters, boolean numbers)
    • start, end는 아스키코드의 랜덤으로 생성할 문자열의 아스키코드 처음, 마지막을 의미합니다.
    • letters, numbers 는 true일 경우 문자나 숫자만으로 생성하는 파라미터 입니다.
  • RandomStringUtils.randomAlphabetic(int count)
    • 길이가 count인 대소문자 영어 문자열을 생성합니다.
  • RandomStringUtils.randomNumeric(int count)
    • 길이가 count인 숫자를 랜덤으로 생성합니다.
  • RandomStringUtils.randomAlphanumeric(int count)
    • 길이가 count인 대소문자, 숫자를 랜덤으로 생성합니다.
  • RandomStringUtils.randomAscii(int count)
    • 길이가 count인 아스키코드(32~126) 사이의 코드를 랜덤으로 생성합니다.


최신 글