当前位置: 移动技术网 > IT编程>开发语言>Java > Java实现产生随机字符串主键的UUID工具类

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

2019年07月19日  | 移动技术网IT编程  | 我要评论
本文实例讲述了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]);
    }
  }
}

运行结果:

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

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

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

高强度密码生成器:

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

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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网