코딩마을방범대
자바에서 유니크한 값 가져오기 ( UUID / random ) 본문
728x90
UUID (Universally Unique Identifiers)
각 개체를 고유하게 식별 가능한 값 (범용 고유 식별자)
사용 방법
UUID.randomUUID().toString()
위 코드를 실행할 때마다 새로운 값들이 출력되며, 이 값을 유니크한 값으로 사용해주면 된다.
QR 코드를 만들 때 유니크한 값을 ID로 주어 사용하게 되는데,
이럴 때 사용하면 중복값 체크할 필요 없이 바로 사용이 가능하다.
만약 길이가 길어서 짧게 쓰고 싶다고 substring을 주게 된다면, UUID를 사용하는 목적이 사라진다!
문자열을 잘라서 쓸 경우 중복값이 발생할 수 있고, 이 문자열 그대로가 유니크한 값이기 때문에 수정없이 그대로 사용해야 한다.
난수를 통해 랜덤값을 만들게 될 경우 중복 체크 로직은 따로 구성해야하는 번거로움이 있지만,
본인 프로젝트에 맞춰 값을 생성할 수 있다는 장점이 있다.
10자리 랜덤값 생성
StringBuilder result = new StringBuilder();
Random rd = new Random();
for( int i = 0; i < 5; i++ ) {
result.append(rd.nextInt(10));
}
RandomString rs = new RandomString(5);
result.append(rs.nextString());
위와 같이 0~9 까지의 랜덤한 숫자 5자리, 랜덤한 문자 5개를 같은 String 에 담아주었다.
결과는 아래와 같은 10자리 랜덤값이 출력되었고, 이 값의 순서를 무작위로 바꿔줄 것이다.
랜덤 값 중 중복되는 값이 없다면 Set을 통해 간단하게 순서를 무작위로 재배치 할 수 있겠지만,
중복되는 값이 있을 경우 자동으로 덮어써버리기 때문에 Set 사용은 불가능하다.
String to List
List<String> list = new ArrayList<>();
for( int i = 0; i < result.length(); i++ ){
list.add(String.valueOf(result.charAt(i)));
}
위의 랜덤값을 List에 순서대로 담아준다.
무작위 순서 재배치
Collections.shuffle(list);
이후 마지막으로 나온 랜덤값을 이용해 유니크한 값으로 사용하면 된다.
해당 값은 중복 우려가 있으므로, Map 같은 곳에 저장해놓은 후 사용 완료 시 삭제하는 식으로 사용해야한다!
참고사이트
728x90
'💡 백엔드 > Java' 카테고리의 다른 글
List 를 String 으로, String 을 List 로 변환하는 방법 (0) | 2023.07.28 |
---|---|
[Java] String, StringBuffer, StringBuilder의 차이점 (0) | 2023.07.28 |
Java에서 QR 코드 만들기 (0) | 2023.07.27 |
Java의 Reflection 기능을 사용하는 방법 (0) | 2023.07.26 |
Java에서 OS의 시스템에 접근하기 (0) | 2023.07.25 |