के लिए सरणी में तत्वों की तुलना करें मैं जावा में 5 अंकों int
सरणी उत्पन्न करने की कोशिश कर रहा हूं और कहां से शुरू करना है, इस पर समस्या हो रही है। सरणी में से कोई भी संख्या डुप्लिकेट नहीं हो सकती है। मैं इसके लिए यादृच्छिक संख्याएं उत्पन्न कर सकता हूं लेकिन यह समझ नहीं सकता कि संख्याओं की तुलना एक-दूसरे से कैसे करें और किसी भी डुप्लिकेट को प्रतिस्थापित करें।डुप्लीकेट
उत्तर
आप एक सरणी के बजाय java.util.Set का उपयोग कर सकते हैं क्योंकि यह केवल अद्वितीय तत्वों की गारंटी है।
इस प्रयास करें:
int[] digits = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
Random random = new Random();
int[] generateId() {
int[] clone = digits.clone();
int[] id = new int[5];
for (int i = 0; i < 5; i++) {
int candidate;
do {
candidate = random.nextInt(10);
} while (clone[candidate] == -1);
id[i] = clone[candidate];
clone[candidate] = -1;
}
return id;
}
आप (जो भी उन्हें सॉर्ट जाएगा) एक TreeSet में सरणी में कनवर्ट करके डुप्लिकेट से छुटकारा पाने के कर सकते हैं:
int numbers[] { 4 5 7 6 5 7 5 89 847 7 94 093 02 10 11 10 11 };
TreeSet set new TreeSet(Arrays.asList(numbers));
for (int no : set)
System.out.println(no);
अगर मैं तुम्हें सही ढंग से समझ, आप यादृच्छिक 5 अंक संख्या चाहते हैं, कोई अंक दोहराया नहीं गया है?
यदि ऐसा है, तो 0-9 अंकों की सूची को घुमाने के लिए एक तरीका है, फिर पहले 5 तत्व चुनें।
संपादित
Integer[] digits = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
Random random = new Random();
public Integer[] generateId() {
List<Integer> id = Arrays.asList(digits);
Collections.shuffle(id, random);
return id.subList(0, 5).toArray(new Integer[0]);
}
इस हे में उत्पन्न (अंकों की संख्या), कोई भीतरी छोरों, कोई उथल < - विकल्पों की संख्या वास्तव में बड़ी हो जाता है अगर यह महंगा हो सकता है
int[] digits = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
Random random = new Random();
int[] generateId() {
int[] choices = digits.clone();
int[] id = new int[5];
for (int i = 0; i < 5; i++) {
// one less choice to choose from each time
int index = random.nextInt(choices.length - i);
id[i] = choices[index];
// "remove" used item by replacing it with item at end of range
// because that index at the end won't be considered in next round
choices[index] = choices[choices.length - i - 1];
}
return id;
}
एक विकल्प के रूप में, बस सरणी को सॉर्ट करें और इसे पुन: सक्रिय करें।
List<int> myList = new List<int>() { 1, 1, 2, 3, 4, 5, 5, 7 , 1, 7};
myList.Sort();
for (int i = myList.Count - 1; i > 0; i--)
{
if (myList[i] == myList[i - 1])
myList.RemoveAt(i);
}
लेकिन निश्चित रूप से यह सर्वोत्तम है कि कोई डुप्लिकेट शुरू करने के लिए न हो।
सबसे पहले मैं आपकी मदद करने के लिए सभी को धन्यवाद देना चाहता हूं, मैं वास्तव में इसकी सराहना करता हूं।
मुझे यह प्रोग्राम इस तरह से काम करने के लिए मिला है, लेकिन ऐसा लगता है कि हालांकि एक आसान तरीका होना चाहिए। मैंने जो किया था यह रहा। कोई और टिप्पणी भयानक होगी।
do
{
for (int i = 0; i < 5; i++)
{
iNumber = generator.nextInt(9) + 1;
numbers[i] = iNumber;
}
}
while(numbers[0] == numbers[1] || numbers[0] == numbers[2] || numbers[0] == numbers[3] || numbers[0] == numbers[4] || numbers[1] == numbers[2] || numbers[1] == numbers[3] || numbers[1] == numbers[4] || numbers[2] == numbers[3] || numbers[2] == numbers[4] || numbers[3] == numbers[4]);
देखो, बस यादृच्छिक संख्याएं उत्पन्न करें और उन्हें सेट
@ सैंडमैन: मुझे नहीं पता कि यह एक अच्छा विचार है, क्योंकि सेट एआरएआईके के तत्वों को वापस करने के आदेश के बारे में कोई गारंटी नहीं देता है। @ जॉन: इस धागे में कम से कम दो क्लीनर समाधान प्रस्तावित हैं? –
@sventek: मुझे एहसास नहीं हुआ कि संख्याओं का आदेश दिया जाना है? उस मामले में मैं एक सॉर्टेडसेट का उपयोग करने का सुझाव देता हूं। यह आवेषण अधिक महंगा बनाता है, लेकिन मुझे अभी भी विश्वास है कि यह एक बहुत अच्छा समाधान है। – Sandman
/**
* findDuplicate method return map where key is unique no and value as the
* repitation
*
* @param a
* : arrays of Objects
* @return map
*/
public Map findDuplicate(T[] a) {
Map<T, Integer> map = new HashMap<T, Integer>();
Set<T> unique = new HashSet<T>(Arrays.asList(a));
int count = 0;
for (T integer : unique) {
for (T integer1 : a) {
if (integer == integer1) {
++count;
}
}
map.put(integer, count);
count = 0;
}
return map;
}
- 1. डुप्लीकेट
- 2. डुप्लीकेट
- 3. डुप्लीकेट
- 4. केवल डुप्लीकेट
- 5. संग्रह में डुप्लीकेट ढूंढना
- 6. स्ट्रिंग संदर्भ डुप्लीकेट हैं?
- 7. जीसीएम डुप्लीकेट संदेश
- 8. जावास्क्रिप्ट/jQuery टेक्स्ट डुप्लीकेट
- 9. सभी डुप्लीकेट पंक्तियों
- 10. प्रत्येक मान के सभी डुप्लीकेट
- 11. एसक्यूएल गणना और समूह डुप्लीकेट
- 12. # 1060 - डुप्लीकेट कॉलम नाम 'आईडी'
- 13. स्कैला: ऑब्जेक्ट्स की सूची में डुप्लीकेट हटाएं
- 14. बाएं जुड़ने का उपयोग करके डुप्लीकेट
- 15. डुप्लीकेट पंक्तियों से एक पंक्ति का चयन
- 16. एक अनुक्रमित अनुक्रम में डुप्लीकेट को कुशलतापूर्वक
- 17. डुप्लीकेट पंक्तियों को कैसे हटाएं और तालिका
- 18. ओओ डिज़ाइन और प्रतिबिंबित/डुप्लीकेट विधियां
- 19. सूची तत्वों के लगातार डुप्लीकेट हटाएं
- 20. NoUniqueBeanDefinitionException हालांकि कोई डुप्लीकेट नहीं मिला
- 21. ActionBarSherlock + गूगल मैप्स एपीआई v2 डुप्लीकेट आईडी
- 22. एसक्यूएल क्वेरी - 3 से अधिक डुप्लिकेट डुप्लीकेट हटाएं?
- 23. MySQL - डुप्लीकेट के बिना दो टेबल में शामिल हो?
- 24. डुप्लीकेट पंक्तियों को हटा दें और एक पंक्ति
- 25. एक ही पृष्ठ पर एकाधिक remote_form_for डुप्लीकेट आईडी
- 26. दो जेनेरिक सूचियों की तुलना करें और डुप्लीकेट
- 27. डुप्लीकेट कोड यूनिट परीक्षणों में अधिक सहनशील है?
- 28. मैं MongoDb में डुप्लीकेट कैसे हटा सकता हूं?
- 29. पायथन - स्ट्रिंग में लगातार अगर डुप्लीकेट को कैसे हटाया जाए?
- 30. सूची समझ डुप्लीकेट को फ़िल्टर क्यों नहीं करती है?
आप '5 अंक पूर्णांक सरणी' से क्या मतलब है? –