注册 登录
编程论坛 J2EE论坛

[求助]序列号的生成

shithanwa 发布于 2007-11-07 18:54, 1772 次点击

问题描述:
要生成一个唯一的序列号,构成:地区号(比如010)+设备号(比如01)+N位的序列号(XXXXX)
例如:北京地区用户要用设备2号; 则生成序列号如:01002XXXXXXXXXXXXXX 并且保证这个号码的唯一。


请各位大虾提供一下帮助。不胜感激!


要生成如下的要求的ID
**************************************************
755 01 01
A B C
A:3位,所在分中心的地区区号
B:2位,一个地区可能有多个分中心,所以需指明序号
C:2位,编号种类,
01——父域ID,
02——子域ID,
03——用户编码,
04——前端设备编码
***************************************************
父域ID 00001
A
A:5位,序号
***************************************************
子域ID 00001
A
A:5位,序号
***************************************************
用户编码
0 01 00001 00001
A B C D
A:1位,用户种类,
0——父域下用户
1——子域下用户
B:2位,用户类型
00——默认的管理员用户
01——普通用户
C:5位,所属的域序号
D:5位,用户序号
****************************************************
前端设备编码
0 756 0 01 000001
A B C D E
A:1位,表明设备情况
0——本地设备
1——异地设备
B:3位,若是异地设备,则需指明异地区号,若是本地设备,则是000
C:1位,设备种类,
0——主设备,
1——父设备,即镜头设备
2——子设备
D:2位,设备类型,具体见附录
E:6位,若是父设备,则前两位00,后四位为序号,若是子设备,则前四位为所属父设备序号,后两位为序号

[此贴子已经被作者于2007-11-8 18:36:10编辑过]

5 回复
#2
DasayHaoEr2007-11-07 19:19
List list = new ArrayList();
String areaNum = "010";
String fixtureNum = "02";
String str = areaNum + fixtureNum + Math.random() * 10000;
list.add(str);
for (int i = 0 ; i < list.size(); i ++){
if (str.equals(list.get(i).toString())){
System.out.println(str + "was exict");
break;
}
}
list.add(str);
#3
luoxian_20032007-11-07 19:57
最好是根据当前时间来
后面的那个N位数用 System.currentTimeMillis()
当然要考虑到并发的问题,最好写个类封装一下,采用单例模式,生成函数使用synchronized关键字修饰

#4
shithanwa2007-11-08 18:41
今天找到了关于具体的要求了,希望帮忙看下,谢谢各位了!
出出点子,到底怎样才比较好?
#5
千里冰封2007-11-09 09:32
用java.util.UUID这个类
#6
shithanwa2007-11-09 12:53

谢谢了,但是那个要求生的ID是有规则的,不能随便生成UUID啊?

1