我想每次调用methode generateCustumerId()时生成唯一的ID。生成的ID必须是8个字符或少于8个字符。 这个要求是必要的,因为我需要将它存储在数据文件中,并且架构被确定为8个字符长。如何生成长度小于8个字符的唯一数字
选项1正常工作。而不是选项1,我想使用UUID。问题是UUID生成一个具有许多字符的ID。有人知道如何生成一个小于99999999的唯一ID吗?
选项1
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
public class CustomerIdGenerator {
private static Set<String> customerIds = new HashSet<String>();
private static Random random = new Random();
// XXX: replace with java.util.UUID
public static String generateCustumerId() {
String customerId = null;
while (customerId == null || customerIds.contains(customerId)) {
customerId = String.valueOf(random.nextInt(89999999) + 10000000);
}
customerIds.add(customerId);
return customerId;
}
}
1选项生成一个唯一的ID是太长
public static String generateCustumerId() {
String ownerId = UUID.randomUUID().toString();
System.out.println("ownerId " + ownerId);
return ownerId
}
如果你砍,你将永远有一个机会,该ID是不是唯一的 – loudiyimo 2010-03-28 16:45:59
任何时候你限制自己8个字符 - 有一个机会,你将不再是唯一的。事实上,GUID有可能不是唯一的 - “两次产生相同数字的概率非常小” - 但不是无。 – 2010-03-29 14:32:33