Java實現(xiàn)產(chǎn)生隨機字符串主鍵的UUID工具類
本文實例講述了Java實現(xiàn)產(chǎn)生隨機字符串主鍵的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轉(zhuǎn)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 需要獲得的序號數(shù)量 * @return String[] 序號數(shù)組 */ 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("腳本之家測試結(jié)果:"); // 得到一個序號 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]); } } }
運行結(jié)果:
PS:這里再為大家提供幾款功能類似的在線工具供大家參考:
在線隨機數(shù)字/字符串生成工具:
http://tools.jb51.net/aideddesign/suijishu
在線隨機字符/隨機密碼生成工具:
http://tools.jb51.net/aideddesign/rnd_password
高強度密碼生成器:
http://tools.jb51.net/password/CreateStrongPassword
更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java字符與字符串操作技巧總結(jié)》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設(shè)計有所幫助。
相關(guān)文章
Springmvc獲取前臺請求數(shù)據(jù)過程解析
這篇文章主要介紹了Springmvc獲取前臺請求數(shù)據(jù)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-07-07淺談在Java中使用Callable、Future進行并行編程
這篇文章主要介紹了淺談在Java中使用Callable、Future進行并行編程,具有一定借鑒價值,需要的朋友可以參考下。2017-12-12java中g(shù)et()方法和set()方法的作用淺析
這篇文章主要給大家介紹了關(guān)于java中g(shù)et()方法和set()方法的作用,set是是對數(shù)據(jù)進行設(shè)置,而get是對數(shù)據(jù)進行獲取,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-07-07Spring MVC 基于URL的映射規(guī)則(注解版)
這篇文章主要介紹了Spring MVC 基于URL的映射規(guī)則(注解版) ,詳細的介紹了幾種方式,有興趣的可以了解一下2017-05-05