Java 如何最好地为未存储在db中的对象生成密钥?

Java 如何最好地为未存储在db中的对象生成密钥?,java,Java,如果我有一些属性发生变化的对象。如何才能最好地跟踪对象?可能正在创建一个ID。创建这样一个ID有什么用处?创建时计算的静态字段 class Foo { String bar; int id; static int counter = 0; Foo() { this.id = counter++; } } 我能做得更好吗? 我不想将对象存储在db中,也不想使用HashMap或类似的工具。对于单线程应用程序,您的方法是可以的。对于多线程,您可以使用 AtomicI

如果我有一些属性发生变化的对象。如何才能最好地跟踪对象?可能正在创建一个ID。创建这样一个ID有什么用处?创建时计算的静态字段

class Foo {
  String bar;
  int id;

  static int counter = 0;

  Foo() {
    this.id = counter++;
  }
}
我能做得更好吗?
我不想将对象存储在db中,也不想使用HashMap或类似的工具。

对于单线程应用程序,您的方法是可以的。对于多线程,您可以使用

 AtomicInteger idGen  = new AtomicInteger();
要获取要调用的下一个Id,请执行以下操作:

idGen.getAndIncrement();

我知道UUID。但这是100%的节省吗?我的意思是,当然UUID不太可能是双重生成的。如果在任何时候发生这种情况,那将是一个除砂器。因此,使用UUID,如果没有其他对象已经包含该UUID,我必须在创建时对所有对象进行迭代,这是100%确定的。我认为这是非常低效的。生成的UUID碰撞的概率非常小。我怀疑你会遇到这样的情况。有人可能会说,与UUID的冲突相比,它更可能遇到整数(甚至长)溢出(和冲突)。