java 生成八位 永远不重复的字符串

java 生成八位 永远不重复的字符串。。。。。。。。。。。。。。。。。

public static void main(String[] args) {
        String a=RandomStringUtils.random(8, "abcdefghijklmnopqrstuvwxyz1234567890");
        System.out.println(a);
    }

一般来说不会重复,重复的概率比你中500万还低

UUID如果你随机的长度是32位,截取前面8位方法最好不要这样,最好是使用random(位数,‘字符’);我试过用uuid随机32位置,然后取8位,比randow 出现的概率大多了

 

1、用一个字符数组保存之前生成的字符串。
2、用rand生成一组字符串,判断是否和之前的字符串相同,相同则重新生成,直到生成不重复的字符串。

这种方法虽然在数据量大的情况下效率低,但是也是一种方法。

http://blog.csdn.net/lzl_Avery/article/details/73176078 看我博客这篇 只需要把初始化数组的地方 改成char数组 把你要用来生成的初始自符串转为char数组给它就可以
原理就是那样一个原理

http://blog.csdn.net/xuanzhangran/article/details/56672477

看看并发量怎么样,并发量小的话直接用时间戳。

换个思路,随机生成一个字符,然后丢到Set中,判断Set 的size()等于8,取出来链接成字符串。

8位的话,在一直生成的情况下永远不重复是不可能的
有个思路是生成近期不重复的字符串
使用Redis或数据库记录每一位上字符的使用情况
在每一位置上生成字符时判断是否还有字符可用,逐步确保有一位置的字符是不重复的,后几位随机生成

可以用UUID生产一个字符串,然后再截取前8位,重复的概率也是相当低的
String str = UUID.randomUUID().toString().replace("-", "").substring(0, 8);