在java中生成动态唯一随机注册ID

时间:2016-01-06 10:31:50

标签: java

我被分配了一个任务来生成动态唯一随机注册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();
    }
}

2 个答案:

答案 0 :(得分:1)

使用像UUID.randomUUID()

这样的UUID

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的前缀,并确保每次生成后前缀增加。这只允许每一代的短读。