코딩마을방범대

자바에서 유니크한 값 가져오기 ( UUID / random ) 본문

💡 백엔드/Java

자바에서 유니크한 값 가져오기 ( UUID / random )

신짱구 5세 2023. 7. 27. 16:11
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 같은 곳에 저장해놓은 후 사용 완료 시 삭제하는 식으로 사용해야한다!

 

 

 

 

 


참고사이트

자바 UUID란? 개념부터 생성, 사용법 정리

 

 

728x90