numero incrementar hacer generar dynamodb como codigo autonumerico automatico autoincremento autoincremental autoincrementable auto_increment java uniqueidentifier uid

hacer - incrementar id en java



¿Cómo generar un ID único en Java(entero)? (9)

Único en cualquier momento:

int uniqueId = (int) (System.currentTimeMillis() & 0xfffffff);

¿Cómo generar una ID única que sea un número entero en java que no adivine el siguiente número?


¿Lo necesitas para ser?

  • Único entre dos JVM que se ejecutan al mismo tiempo.
  • Único incluso si se reinicia la JVM.
  • a salvo de amenazas.
  • apoyo nulo? Si no, use int o long.

¿Qué tan único tiene que ser?

Si solo es único dentro de un proceso, entonces puede usar un AtomicInteger y llamar a incrementAndGet() cada vez que necesite un nuevo valor.


Es fácil si estás algo limitado.

Si tienes un hilo, solo usas uniqueID ++; Asegúrese de almacenar la ID única de la versión actual cuando salga.

Si tiene varios subprocesos, funciona un método de generación unicaID sincronizado común (implementado de la misma manera que anteriormente).

El problema es cuando tiene muchas CPU, ya sea en un clúster o en alguna configuración distribuida como un juego de igual a igual.

En ese caso, generalmente puede combinar dos partes para formar un solo número. Por ejemplo, cada proceso que genera una ID única puede tener asignado su propio número de ID de 2 bytes y luego combinarlo con una ID única ++. Algo como:

return (myID << 16) & uniqueID++

Puede ser complicado distribuir la parte "myID", pero hay algunas formas. Simplemente puede tomar una de una base de datos centralizada, solicitar una ID única de un servidor centralizado, ...

Si tenía un Long en lugar de un Int, uno de los trucos comunes es tomar la identificación del dispositivo (UUID) de ETH0, que se garantiza que sea única para un servidor; luego, agregue un número de serie.


Si realmente quisiste decir entero en lugar de int:

Integer id = new Integer(42); // will not == any other Integer

Si desea algo visible fuera de una JVM para otros procesos o para el usuario, una persistente o una serie de otras consideraciones, entonces existen otros enfoques, pero sin contexto probablemente sea mejor usar la singularidad incorporada de la identidad del objeto dentro de tu sistema.


Solo genere la ID y verifique si ya está presente o no en su lista de ID generadas.



int uniqueId = 0; int getUniqueId() { return uniqueId++; }

Agregue synchronized si desea que sea seguro para subprocesos.


import java.util.UUID; public class IdGenerator { public static int generateUniqueId() { UUID idOne = UUID.randomUUID(); String str=""+idOne; int uid=str.hashCode(); String filterStr=""+uid; str=filterStr.replaceAll("-", ""); return Integer.parseInt(str); } // XXX: replace with java.util.UUID public static void main(String[] args) { for (int i = 0; i < 5; i++) { System.out.println(generateUniqueId()); //generateUniqueId(); } } }

Espero que esto te ayude.