请教一个ID生成的问题,对于同一个字符串,每次生成一样的数字ID,对于不同的字符串,每次都生成不一样的ID

如题,请问大家有没有什么想法?有没有成熟的解决方案。谢谢。

目前在一个短链接算法中,我使用的是如下的方案:

1,为字符串分别使用3个不同的hash算法,生成三个hash值(用于定位)
2,通过3个hash值去数据库中查询是否存在该字符串的记录。(不用MD5是因为MD5是值本身是字符串序列,查找效率地)
3. 不存在记录则通过自增ID,为该字符串分配一个唯一的ID序列,然后将ID,3个hash值,字符串本身存入数据库

只有3个hash值不同时相等(基本不可能)ID值就是唯一的,而且通过设置自增ID的初始值,可以精确指定ID值的范围

字符串可以无限长, 除非数字无限大。。。

1、能否设定字符串范围;如多长;
2、不用这种方式不行吗? 为什么要这样

如果字符串不会无限大,最方便的就是用asc码。

如果还有英文以外的用unicode码。

java里面最方便了。

你可以自己试试,比如
[code="java"]
String test = "azAZ";
StringBuilder sb = new StringBuilder();
for (char c : test.toCharArray()) {
sb.append((int) c);
}
[/code]

如果还不方向,后方补0之类的手段也可以啊。

获取字符串hashCode 就搞定了

直接HashCode吧

使用md5加密一下。

这个问题学习写程序的第一个月就应该会呀。字符串里面的字符,每个都对应着ASCII码表的相应字符,把String里面的字符用charAt方法逐个取出来,直接放到int型变量里面就可以了,原理是int型和char型本质都是ASCII码表的对应数字。

为什么要用MD5或SHA呢,你的字符串本身就可以表明它自己的身份,为什么还要用MD5和SHA的字符串去表示呢?

是这个意思么?你这是想做一件什么事情,好无聊啊

数字范围有限,无论你采用什么方法,不同的字符串也可能会产生重复的数字id

如果没有加密需求的话,既然字符串不同,ID号就不同,那直接用字符串表示,行吗?
如果有加密需求,可以考虑hash!