2009-06-09 15 views
18

क्या जावा संग्रह का एक प्रकार है कि मेरे fetching का क्रम यादृच्छिक है? उदाहरण के लिए, मैंने संग्रह में पूर्णांक 1, 2, 3 डाला और जब मैं उन्हें मुद्रित करने का प्रयास करता हूं तो सभी परिणाम "1 2 3", "3 2 1" या "1 3 2" हो सकते हैं?जावा यादृच्छिक संग्रह

उत्तर

43

तुम सिर्फ एक यादृच्छिक अनुक्रम चाहते हैं तो आप Collections.shuffle

List<Integer> list = new LinkedList(); 
    //Add elements to list 
    Collections.shuffle(list); 
+5

यह एक ऐसा मामला है जहां आप 'एरेलिस्ट' का उपयोग करना चाहते हैं - एल्गोरिदम के वर्णन से आप तेजी से यादृच्छिक पहुंच चाहते हैं। –

5

एक सामान्य संग्रह लें और इसे घुमाएं, फिर इसे सामान्य तरीके से फिर से चालू करें।

आप शफल करने के लिए java.util.Collections.shuffle(List<T>) का उपयोग कर सकते हैं।

+1

ठीक है, आपका पहला जवाब मुझे भ्रमित कर रहा है क्योंकि मुझे java.util.Collections से अवगत नहीं है। मैं एक ताजा आदमी हूँ, तुम्हें पता है। – Sefler

2

बस shuffle संग्रह इस्तेमाल कर सकते हैं।

तो संग्रह चाहिए आपको यादृच्छिक सूचकांक में तत्वों का उपयोग कर सकता है, लेकिन फिर आप लोगों को इससे पहले कि आप (शायद, यह आपके आवेदन पर निर्भर करता है) का उपयोग किया है का ट्रैक रखने के लिए है, और यह बहुत ही किया जा सकता है में ठहरने अक्षम। एक बेहतर समाधान, अगर स्मृति कोई बाधा नहीं है, तो बस एक प्रतिलिपि बनाना और उसे शफल करना होगा।

1

ऐसा नहीं है कि मुझे पता है। आप मूल्यों को हमेशा सूची में डाल सकते हैं, और मानों को यादृच्छिक क्रम में रखने के लिए Collections.shuffle का उपयोग कर सकते हैं।

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