기존에 누군가 구현해놨던 코드가 prefix + random 숫자 5 이었는데 중복 키가 났다.
prefix 배열도 자그만치 51개.
51 x random 5숫자로 처리한게 문제라서 시간 날때 수정했음.
처음에는 그냥 nano나 currentTimeMillis 뽑아서 16진수로 만드려고 시도했다.
구현하다 생각하니 이거나 UUID나 결국 16진수란걸 생각해서 접음.
public static String randomKeys(int length) {
StringBuilder sb = new StringBuilder();
Random random = new Random();
int minA = 65; //A
int maxZ = 90; //Z
for (int i = 0; i < length; i++) {
if (random.nextBoolean() == true) {
sb.append(random.nextInt(10));
} else {
int ascKeyCode = (int) ((Math.random() * (maxZ - minA)) + minA);
sb.append((char)ascKeyCode);
}
}
return sb.toString();
}
그냥 대문자만 뽑는걸로 했는데, 소문자도 사용 가능하다면 로직 좀 추가해야 함.
회사 데이터베이스가 대소문자 가리는 binary 타입이 아니기에 그냥 대문자로만 구현...
'Java' 카테고리의 다른 글
자바 프로그래머스 위클리 챌린지 8주차 (0) | 2021.10.01 |
---|---|
자바 임의 값 0~100 랭크 구하기 (0) | 2021.09.16 |
자바 Json Parser (0) | 2021.02.22 |
자바 Log Class (0) | 2021.02.22 |
자바 Aspect, Annotation으로 Log 만들기 (0) | 2021.02.22 |