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]); } } }
运行结果:
ps:这里再为大家提供几款功能类似的在线工具供大家参考:
在线随机数字/字符串生成工具:
在线随机字符/随机密码生成工具:
高强度密码生成器:
http://tools.jb51.net/password/createstrongpassword
更多关于java算法相关内容感兴趣的读者可查看本站专题:《java数据结构与算法教程》、《java字符与字符串操作技巧总结》、《java操作dom节点技巧总结》、《java文件与目录操作技巧汇总》和《java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
上一篇: 兼容各个浏览器的技巧
下一篇: ASP.NET实现推送文件到浏览器的方法