我被分配了一个任务来生成动态唯一随机注册ID并存储在文件中,当生成增益时,它应该读取文件并给出新的ID。 提前谢谢......
我试过的代码如下......
public class Main {
public static void main(String a[]) throws IOException {
File file = new File("Input.txt");
file.createNewFile();
FileWriter filewriter = new FileWriter(file);
Random random = new Random();
for (int i=0; i<10; i++) {
int randomInteger = random.nextInt();
filewriter.write(randomInteger);
System.out.println("\n Random Integer in Java: " + randomInteger);
}
filewriter.flush();
filewriter.close();
}
}
答案 0 :(得分:1)
使用像UUID.randomUUID()
http://docs.oracle.com/javase/8/docs/api/java/util/UUID.html
或使用AtomicInteger并在每次需要新值时调用incrementAndGet()
。
http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/atomic/AtomicInteger.html
答案 1 :(得分:0)
在你的解决方案中,如Tim Biegeleisen所述,当你生成一个新的随机整数时,你必须读取你的文件并检查是否已经生成了整数。如果有,那么你必须生成一个新的。
但是这个解决方案存在一些问题。如果您要从此代码生成大量ID,则运行时将继续增加,因为每次生成新ID时都需要搜索文件。如果你不介意牺牲一些随机性,我建议只保存生成的最后一个id的前缀,并确保每次生成后前缀增加。这只允许每一代的短读。