【问题标题】:Make unique id of just numbers?只制作数字的唯一ID?
【发布时间】:2010-10-02 15:18:45
【问题描述】:

在一个程序中,我正在尝试制作唯一的 ID 号。我是这样用的:

AtomicInteger count = new AtomicInteger(0);
count.incrementAndGet();
int pid = count.get();
System.out.println("pid: " + pid);

但我的教授是这样说的:

另一个问题是 pid 生成。您所做的只是获取从 0 开始的下一个整数。当您到达进程表的末尾时会发生什么?您必须根据项目规范提出自己的 pid 生成算法,即它在数字 0 到 99 之间循环,然后当它循环回到低数字时,它从最低的可用 pid 开始。有很多方法可以实现这样的算法,但最简单的方法是添加 1 mod 100,然后继续查找,直到找到可用的 pid。当然,这意味着您必须跟踪哪些 pid 可用。

我该怎么做?

【问题讨论】:

    标签: java uniqueidentifier identification


    【解决方案1】:

    对我来说,你教授的解释很清楚——其中有什么具体的部分你不明白吗?

    如果您了解各个部分,请将任务分成更小的子任务并逐个实施。喜欢

    1. 循环从0到99的数字(99之后,下一个数字应该又是0)
    2. 添加一个工具来存储到目前为止生成的数字(例如在collection 中)
    3. 添加工具以检查当前号码是否尚未使用
    4. (添加一个工具以在关联进程终止时释放已使用的进程号 - 从描述中不清楚您是否需要它。)

    【讨论】:

    • @Luron,完美——这也是我的第一选择 :-)
    • 1.链表可以正常工作吗? 4. 是的,我确实需要。但是我该怎么做呢?
    • @Luron,1. 取决于你如何使用它——它可能在某些算法中有用,但在其他算法中无用。对于最简单的解决方案(如您的教授所解释的),您不需要它。 4. 实现一个方法freePid(int pid),从使用的pids集合中删除给定的pid。
    • 我还是不明白怎么做?我必须将 pid 保留在一个程序中并在另一个类中声明值
    • @Luron,当你生成了一个新的未使用的 PID 时(大概是在一个名为 getNextPid() 的方法中),你将它添加到使用的 PID 集合中。当freePid 被调用时,你会从集合中移除给定的PID。
    猜你喜欢
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    • 1970-01-01
    • 2012-04-27
    相关资源
    最近更新 更多