欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java实现产生随机字符串主键的UUID工具类

程序员文章站 2024-02-20 16:07:10
本文实例讲述了java实现产生随机字符串主键的uuid工具类。分享给大家供大家参考,具体如下: package com.gcloud.common; impor...

本文实例讲述了java实现产生随机字符串主键的uuid工具类。分享给大家供大家参考,具体如下:

package com.gcloud.common;
import java.net.inetaddress;
import java.util.uuid;
/**
 * uuid工具类
 * created by charlin on 2017/9/9.
 */
public class uuidutil {
  private string sep = "";
  private static int ip = 0;
  private static short counter = (short) 0;
  private static int jvm = (int) (system.currenttimemillis() >>> 8);
  static {
    try {
      ip = toint(inetaddress.getlocalhost().getaddress());
    } catch (exception e) {
    }
  }
  private static uuidutil instance = new uuidutil();
  public static uuidutil getinstance() {
    return instance;
  }
  /**
   * byte转int
   *
   * @param bytes
   * @return
   */
  public static int toint(byte[] bytes) {
    int result = 0;
    for (int i = 0; i < 4; i++) {
      result = (result << 8) - byte.min_value + (int) bytes[i];
    }
    return result;
  }
  protected string format(int intval) {
    string formatted = integer.tohexstring(intval);
    stringbuffer buf = new stringbuffer("00000000");
    buf.replace(8 - formatted.length(), 8, formatted);
    return buf.tostring();
  }
  protected string format(short shortval) {
    string formatted = integer.tohexstring(shortval);
    stringbuffer buf = new stringbuffer("0000");
    buf.replace(4 - formatted.length(), 4, formatted);
    return buf.tostring();
  }
  protected int getjvm() {
    return jvm;
  }
  protected synchronized short getcount() {
    if (counter < 0) {
      counter = 0;
    }
    return counter++;
  }
  protected int getip() {
    return ip;
  }
  protected short gethitime() {
    return (short) (system.currenttimemillis() >>> 32);
  }
  protected int getlotime() {
    return (int) system.currenttimemillis();
  }
  public string generate() {
    return new stringbuffer(36).append(format(getip())).append(sep).append(
        format(getjvm())).append(sep).append(format(gethitime()))
        .append(sep).append(format(getlotime())).append(sep).append(
            format(getcount())).tostring();
  }
  // 得到一个序号
  public static string getuuid() {
    string s = uuid.randomuuid().tostring();
    return s.substring(0, 8) + s.substring(9, 13) + s.substring(14, 18) + s.substring(19, 23) + s.substring(24);
  }
  /**
   * 一次得到多个序号
   *
   * @param number int 需要获得的序号数量
   * @return string[] 序号数组
   */
  public static string[] getuuid(int number) {
    if (number < 1) {
      return null;
    }
    string[] ss = new string[number];
    for (int i = 0; i < ss.length; i++) {
      ss[i] = getuuid();
    }
    return ss;
  }
  public static void main(string[] str) {
    system.out.println("测试结果:");
    // 得到一个序号
    system.out.println(getuuid());
    system.out.println("----------------------------");
    // 一次得到多个序号
    string[] uuid_s = getuuid(10);
    for (int i = 0; i < uuid_s.length; i++) {
      system.out.println(uuid_s[i]);
    }
  }
}

运行结果:

Java实现产生随机字符串主键的UUID工具类

ps:这里再为大家提供几款功能类似的在线工具供大家参考:

在线随机数字/字符串生成工具:

在线随机字符/随机密码生成工具:

高强度密码生成器:
http://tools.jb51.net/password/createstrongpassword

更多关于java算法相关内容感兴趣的读者可查看本站专题:《java数据结构与算法教程》、《java字符与字符串操作技巧总结》、《java操作dom节点技巧总结》、《java文件与目录操作技巧汇总》和《java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。