【发布时间】:2017-12-17 22:28:08
【问题描述】:
我正在开发一个 Java 机器人,它可以从 excel 文件中复制信息并将其粘贴到程序上以创建用户名。我从 excel 文件中得到了我需要的一切,除了 ID 号。
我正在尝试生成唯一的纯数字 ID(因此 UUID 不起作用)。它必须是 6 位长,因此,它的范围在 100,000 和 999,999 之间。这是我到目前为止所得到的:
public void genID() {
ArrayList<Integer> casillero = new ArrayList<Integer>();
for (int i = 100000; i < 1000000; i++) {
casillero.add(new Integer(i));
} Collections.shuffle(casillero);
for (int i = 0; i < 1; i++) {
System.out.println("El nuevo ID de casillero es: I" + casillero.get(i));
}
}
这会生成一个 6 位数字,这很棒。但是,我如何确保下次运行我的 java 程序时没有也不会生成这个数字?谢谢!
【问题讨论】:
-
您将这些数字或保存这些数字的对象存储在哪里?卡西莱罗,对吧?先检查是否已经存在。
-
您需要在某处(文本文件、数据库等)持久化数据。
-
目前我没有将现有号码存储在任何地方。我会试试的,谢谢。
-
这取决于您的特定环境。例如,您将连接 IP 地址和进程 ID 的一部分以及当前时间的一部分。但在一般情况下,只有 6 个小数位数可能会导致非常可能的冲突。所以,是的,考虑一些共享和持久计数器,例如 RMDBS 的序列/自动增量或类似的东西
-
谢谢大家的建议!这些都是非常聪明的解决方案,我会努力解决的。
标签: java arrays excel random unique