web-dev-qa-db-fra.com

Quelle est la chance d'obtenir une collision Java UUID.randomUUID?

J'ai besoin de créer des fichiers uniques dans Java et je prévois d'utiliser UUID.randomUUID pour générer leurs noms. Y a-t-il une chance d'obtenir une collision pour cela? Dois-je faire quelque chose comme ci-dessous os I ne devrait pas s'en inquiéter?

Integer attemptsToGenerateUUID = 1;

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

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

    attemptsToGenerateUUID += 1;

    if (attemptsToGenerateUUID > 64) {
        return false;
    }
}
32
daniels

Selon wikipedia , concernant la probabilité de doublons dans les UUID aléatoires:

Ce n'est qu'après avoir généré 1 milliard d'UUID par seconde au cours des 100 prochaines années, la probabilité de créer un seul doublon serait d'environ 50%. Ou, pour le dire autrement, la probabilité d'un double serait d'environ 50% si chaque personne sur terre possédait 600 millions d'UUID.

Je suppose que le même raisonnement s'applique à la mise en œuvre Java de l'UUID. Alors non, vous ne devriez pas vous en soucier.

81
Óscar López