2014-07-21 14 views
16

Ho bisogno di creare alcuni file uniques in Java e pianifico di utilizzare UUID.randomUUID per generare i loro nomi. C'è qualche possibilità di ottenere una collisione per questo? Dovrei fare qualcosa come bellow os non dovrei preoccuparmi di questo?Quanto è grande la possibilità di ottenere una collisione UUID.randomUUID Java?

Integer attemptsToGenerateUUID = 1; 

while (true) { 
    UUID fileUUID = UUID.randomUUID(); 

    if (fileDoesNotExistwith this UUID name) { 
     save file; 
     break; 
    } 

    attemptsToGenerateUUID += 1; 

    if (attemptsToGenerateUUID > 64) { 
     return false; 
    } 
} 
+4

Quindi lo hai già studiato completamente, giusto? – djechlin

+0

Ho visto che c'è sempre la possibilità di avere una collisione. Mi chiedo solo nel mio caso valga la pena implementare questo "failsafe", quindi almeno cercherò alcune volte di ottenere un nome univoco, solo in caso di collisione. – daniels

+1

A valle. La risposta è nella barra laterale. Chiudi come duplicato quando hai finito. – djechlin

risposta

44

Secondo wikipedia, per quanto riguarda la probabilità di duplicati in UUID casuale:

Solo dopo la generazione di 1 miliardo di UUID ogni secondo per i prossimi 100 anni, la probabilità di creare un solo duplicato sarebbe circa 50%. O, per dirla in altro modo, la probabilità di un duplicato sarebbe di circa il 50% se ogni persona al mondo possedesse 600 milioni di UUID.

Suppongo che lo stesso ragionamento si applichi all'implementazione UUID di Java. Quindi no, non dovresti preoccuparti di questo.

Problemi correlati