思路:java产生一个随机8位数,跟数据库某个字段作对比,
如果随机数存在,则重新随机,直到是唯一的。
如何实现起来效率比较高?各位如果有其他方法也可以提出求代码实现。

解决方案 »

  1.   

    用时间吧,Date date = new Date();
    SimpleDateFormat df1 = new SimpleDateFormat("yyyyMMddHHmmss");
    String number = df1.format(date);//这里String取出的就是唯一的随机数,//截取8位和比较你自己解决。时间函数产生效率高,而且一般系统都需要时间列,一举两得、减少冗余
      

  2.   

    public String randomABC(int length) {// 随机字母
    Random random = new Random();
    String val = "";
    for (int i = 0; i < length; i++) {
    int choice = random.nextInt(2) % 2 == 0 ? 97 : 97; // 取得65大写还是97小写
    val += (char) (choice + random.nextInt(26));
    }
    return val;
    } public String random123(int length) {// 随机数字
    Random random = new Random();
    String val = "";
    for (int i = 0; i < length; i++) { val += random.nextInt(10) + "";
    }
    return val;
    }
    参数就是你要生成多少位的
      

  3.   

    想唯一的话建议用uuid,绝对不重复
      

  4.   

    楼主的意思大概是,用一个随机数做表的主键;UUID就是为这个设计的详见:java.util.UUID
      

  5.   

    Java codeDate date = new Date();
    SimpleDateFormat df1 = new SimpleDateFormat("ddHHmmss");
    String number = df1.format(date);//这里String取出的就是唯一的随机数,
      

  6.   


    上面的方法肯定有问题,程序运行多快绝对的<ms级别,时间间隔<ms级别的时候,肯定出现主键重复。