2014-07-21 6 views
16

मुझे जावा में कुछ यूनिकर्स फाइलें बनाने की ज़रूरत है और मैं उनके नाम उत्पन्न करने के लिए UUID.randomUUID का उपयोग करने की योजना बना रहा हूं। क्या इसके लिए टक्कर पाने का कोई मौका है? क्या मुझे कुछ ऐसा करना चाहिए जैसा मुझे इस बारे में चिंता नहीं करनी चाहिए?जावा UUID.randomUUID टक्कर पाने का मौका कितना बड़ा है?

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

तो आपने पूरी तरह से इसे पहले से ही शोध किया है, है ना? – djechlin

+0

मैंने देखा है कि टकराव होने की संभावना हमेशा होती है। मैं बस अपने मामले में सोच रहा हूं कि यह "असफलता" को लागू करने के लायक है, इसलिए कम से कम एक टकराव के मामले में, मैं अनोखा नाम पाने के लिए कम से कम कुछ बार कोशिश करता हूं। – daniels

+1

डाउनवोट। जवाब साइडबार में है। जब आप समाप्त कर लें तो डुप्लिकेट के रूप में बंद करें। – djechlin

उत्तर

44
wikipedia के अनुसार

, यादृच्छिक UUIDs में डुप्लिकेट की संभावना के बारे में:

केवल 1 अरब UUIDs अगले 100 वर्षों के लिए हर दूसरे पैदा करने के बाद, बस एक डुप्लिकेट बनाने की संभावना के बारे में होगा 50%। या, इसे एक और तरीके से रखने के लिए, यदि पृथ्वी पर हर व्यक्ति 600 मिलियन यूयूआईडी के स्वामित्व में है तो एक डुप्लिकेट की संभावना लगभग 50% होगी।

मुझे लगता है कि यूआईआईडी के जावा के कार्यान्वयन पर एक ही तर्क लागू होता है। तो नहीं, आपको इसके बारे में चिंता नहीं करनी चाहिए।

संबंधित मुद्दे