【发布时间】:2014-12-16 09:22:59
【问题描述】:
我阅读了一些答案,通常他们使用集合或其他一些数据结构来确保没有重复。但是对于我的情况,我已经在数据库中存储了很多随机字符串,我必须确保生成的随机字符串不应该存在于数据库中。
我不认为将数据库中的所有随机字符串检索到一个集合中然后生成随机字符串是一个好主意...
我发现 System.currentTimeMillis() 会生成一个“随机”数字,但是如何将该数字转换为随机字符串是一个问题……我需要一个长度为 8 的字符串。
任何建议将不胜感激
【问题讨论】:
-
确保您可以将 7 位随机数附加到某个字母以使其成为 8 位随机字符串。
System.currentTimeMillis不会生成随机数。它只是为您提供从 1970 年 1 月 1 日 UTC 开始的当前时间(以毫秒为单位) -
首先,
currentTimeMillis甚至都不是随机的......我认为你的前提基本上是有缺陷的,但你只需要生成一个随机字符串并检查数据库是否存在,这比将数据库读入一组要轻得多。看看UUID's - 他们可能对你有用。 -
您不需要从数据库中检索所有字符串,对您的随机字符串列使用 UNIQUE 约束。以这种方式插入任何重复的字符串都会失败。