วันพฤหัสบดีที่ 29 กรกฎาคม พ.ศ. 2553

ตัวอย่าง code Gen UUID แบบที่1

บางครั้งเราต้องการใช้ค่าจาก system ที่ gen auto id ไม่ซ้ำกัน หรือเรียกกันว่า unique identifier (uuid)
ตัวอย่าง code ที่สามารถใช้งานได้ตามข้างล่าง
**************************************************

//output :6f5c9761-4728-4cf6-aace-0321f0027bcf ก็จะประมาณนี้
package com.test.test;

import java.util.Locale;
import java.util.Random;

/**
* A simple UUID.
*/
public final class UUID
{
public static void main(String args[])
{

System.out.println(nextUUID());
}
/**
* The characters to generate this UUID with.
*/
private static final char[] HEX = new char[] {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f'
};

/**
* Index into the UUID to set its type.
*/
private static final byte INDEX_TYPE = 6;

/**
* Index into the UUID to set its variation.
*/
private static final byte INDEX_VARIATION = 8;

/**
* The specific type of the UUID.
*/
private static final byte TYPE_RANDOM_BASED = 4;
/**
* The rnd generator.
*/
private static final Random RANDOM = new Random();

/**
* The string representing this UUID.
*/
private final String uuid;

/**
* Constructs a new UUID with the specified bytes.
*/
private UUID(byte[] bytes) {
this.uuid = genString(bytes);
}

/**
* Constructs a new UUID with the specified string.
*
* The size of the string must be 32, but no other characters
* are checked.
*/
public UUID(String uuid) {
this.uuid = uuid.toLowerCase(Locale.US);
if(uuid.length() != 36)
throw new IllegalArgumentException();
}

/**
* Returns the next UUID.
*/
public static UUID nextUUID() {
byte[] bytes = new byte[16];
RANDOM.nextBytes(bytes);
bytes[INDEX_TYPE] &= (byte) 0x0F;
bytes[INDEX_TYPE] |= (byte) (TYPE_RANDOM_BASED << sb =" new" i =" 0;" i="="4" i="="6" i="="8" i="="10)" hex =" info[i]">> 4]);
sb.append(HEX[hex & 0x0F]);
}
return sb.toString();
}

/**
* Generates the string of this UUID.
*/
public String toString() {
return uuid;
}

/**
* Determines if this UUID is the same as another.
*/
public boolean equals(Object o) {
if(o == this)
return true;
else if (o instanceof UUID) {
UUID other = (UUID)o;
return uuid.equals(other.uuid);
}
return false;
}

/**
* The hashCode of this UUID.
*/
public int hashCode() {
return uuid.hashCode();
}
}

ไม่มีความคิดเห็น:

แสดงความคิดเห็น