本文实例讲述了Java实现产生随机字符串主键的UUID工具类。分享给大家供大家参考,具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
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程序设计有所帮助。
原文链接:http://blog.csdn.net/lovoo/article/details/77925870