首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成字母数字代码的非重复列表

生成字母数字代码的非重复列表
EN

Stack Overflow用户
提问于 2010-12-09 23:12:16
回答 7查看 2.5K关注 0票数 1

我正在尝试生成一个不重复的字母数字代码列表。它们将以批量和批量的方式生成,因此不可能显式地查看以前生成的内容-即,需要以某种方式保证唯一性,而不求助于当前批次之外的以前的代码。

代码长度应为8个字符,限制某些字符不能出现在代码中(例如l和L),因为用户将在以后重新输入这些字符。

我可能会用Java实现这一点,但我很感激任何人能想到的任何算法或技巧来解决这个问题……

致以敬意,

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-12-09 23:16:20

只需将System.currentTimeMillis按字母数字进行编码,将每个数字映射到一个字母即可。跟踪最后一次发布(以防止在同一毫秒内生成多个世代),并进行相应的处理。

票数 4
EN

Stack Overflow用户

发布于 2010-12-09 23:20:35

您可以只对原子计数器进行编码,如下所示

代码语言:javascript
复制
AtomicInteger counter = new AtomicInteger();

public String generateId() {
   return Integer.toHexString(counter.getAndIncrement());
}

这将为您提供40亿个唯一ids。

如果您需要超过40亿个字符,您可以使用AtomicLong,并根据您希望允许的字符对该数字使用您自己的编码。

票数 3
EN

Stack Overflow用户

发布于 2010-12-09 23:19:54

如上所述的问题有一个显而易见的解决方案,那就是从零开始按顺序生成代码。将每个代码看作一个以34为基数的数字(除了IL之外,其他数字都是0-9A-Z )。如果这不是你想要的,你可能想要澄清这个问题(例如,你想要随机性吗?)

编辑:这当然需要您记住您生成的最后一段代码,并跨批处理携带这一段信息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4399713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档