如何根据当前时间生成唯一编号?

yeahnope 2003-03-31 03:55:51
谢了!
...全文
1778 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanty 2003-04-01
  • 打赏
  • 举报
回复
System.currentTimeMillis();
用这个比较好些,重复几率比较小。
不过实际开发中,编码最好为数据库信息编号和时间共同组成好一些
secrets001 2003-04-01
  • 打赏
  • 举报
回复
楼主是想要这个呀,可以
long id=new Date().getTime();
long buf=id;
id=new Date().getTime();
while(id==buf) {
id=new Date().getTime();
}
buf=id;
xmpp 2003-04-01
  • 打赏
  • 举报
回复
个人认为,以上问题可以分为数据库是否设为并发操作和程序实际操作两部分进行。
xiaohaiz 2003-03-31
  • 打赏
  • 举报
回复
System.currentTimeMillis() 只是获取当前的时间戳,单位是毫秒,但是这并不是唯一的.
如果你在1毫秒中进行了两次操作,那么这两个ID就是相等的.
问题的解决看你要求的精度如何了.一般可以使用当前的时间戳作为Random发生器的种子.
比如Random ran = new Random(System.currentTimeMillis());
然后需要唯一ID的时候使用ran.nextLong()获取,实际上这样的选择还是看你对于ID精度的要求.可以使用更加复杂的随机算法来产生,比如说产生一串随机字符串加上数字等等.
xmpp 2003-03-31
  • 打赏
  • 举报
回复
System.currentTimeMillis();
squiral 2003-03-31
  • 打赏
  • 举报
回复
好象有一个取微秒时间的,我忘了是怎么做的。或者呢,好象有一个取unique的函数吧。再就是自己写一个生成随机数的小函数,产生一个数,如果已经有了根据一定规则产生修正。
yeahnope 2003-03-31
  • 打赏
  • 举报
回复
这个好像不是唯一的。

我正在做建树的javabean,为了唯一标识节点,所以给节点生成ID。我用
long id=new Date().getTime();
发现在很短得时间间隔内生成的两个节点id相同。如何解决,谢谢!
foolbirds 2003-03-31
  • 打赏
  • 举报
回复
java.util.Date now=new java.util.Date();
String id = String.valueOf(now.getTime());
跟楼上意思一样
geyf 2003-03-31
  • 打赏
  • 举报
回复
楼上的方法可行
secrets001 2003-03-31
  • 打赏
  • 举报
回复
什么意思?
long id=new Date().getTime();
是当前时间的唯一的编号……

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧