अभी मैं निर्माता/उपभोक्ता धागा बनाने की कोशिश कर रहा हूं, निर्माता धागा अक्षरों के सभी संभावित संयोजनों के माध्यम से जाता है और उनके संबंधित एमडी 5 हैश बनाता है। फिर प्रत्येक संयोजन और इसके हैश को HashMap<String,String>
में रखा जाता है। अब मेरे उपभोक्ता धागे में मैं हैशपैप पर Queue<>
संग्रह का उपयोग करने में सक्षम होना चाहता हूं, इसलिए मेरा उपभोक्ता धागा poll()
आदि पर कॉल कर सकता है इस प्रकार Queue
जैसे मूल्य एटीसी को हटा रहा है, लेकिन poll()
पर कॉल करते समय मुझे संयोजन और उसके हैश दोनों को देखने की क्षमता दे रही है मैं ऐसा कैसे कर पाऊंगा? मेरे पास HashMap
है लेकिन यह नहीं पता कि कैसे 'बनाना' या इसे कतार के रूप में डालना है। धन्यवाद।क्या हैश मैप सेट के लिए एक कतार बनाना संभव है?
उत्तर
आपको अपने कोड की थ्रेड-सुरक्षा को संभाले बिना हैश मैप का उपयोग नहीं करना चाहिए। अन्यथा, आप लाइव-लॉक के साथ समाप्त हो सकते हैं।
कुंजी को डालने के क्रम में अपने मानचित्र को फिर से चलाने में सक्षम होने के लिए, आप एक LinkedHashMap का उपयोग कर सकते हैं।
Map m = Collections.synchronizedMap(new LinkedHashMap(...));
निर्माता इस (कुछ खास नहीं) की तरह प्रविष्टियों धक्का होगा:
m.put(key, object)
उपभोक्ता इस तरह प्रविष्टियों मतदान होगा:
while (someCondition) {
Map.Entry nextEntry = null;
// This block is equivalent to polling
{
synchronized(s) {
Iterator i = s.iterator(); // Must be in the synchronized block
if (i.hasNext()) {
nextEntry = i.next();
i.remove();
}
}
}
if (nextEntry != null) {
// Process the entry
...
} else {
// Sleep for some time
...
}
// process
}
LinkedHashMap
प्रकार एक HashMap
और एक Queue
का एक संयोजन तरह है - यह कुंजी/मान जोड़े संग्रहीत करता है, लेकिन यह भी वे किस क्रम में डाला गया याद रखता है। यह वही प्रकार हो सकता है जिसे आप ढूंढ रहे हैं। poll()
फ़ंक्शन कोई स्पष्ट नहीं है, लेकिन यदि आपको LinkedHashMap
पर एक इटेटरेटर मिलता है तो आप उस क्रम में तत्वों पर जायेंगे, जिसमें वे जोड़े गए थे। आप शायद इस तरह एक समारोह लिख सकते हैं:
public <KeyType, ValueType> KeyType first(LinkedHashMap<KeyType, ValueType> map) {
assert !map.isEmpty();
return map.iterator().next();
}
जो आपको पहला तत्व वापस देगा। बस उचित रूप से सिंक्रनाइज़ करना सुनिश्चित करें।
वैकल्पिक रूप से, तुम सिर्फ एक सहायक वर्ग Pair
को परिभाषित करने और फिर कतार में Pair
रों भंडारण के द्वारा एक Queue
अंदर कुंजी/मान जोड़े संग्रहीत करने पर विचार कर सकता है।
आशा है कि इससे मदद मिलती है!
अच्छा, तो वह सिर्फ करने के लिए कुछ SyncObject की आवश्यकता होगी संकेतक जब उपभोक्ता पक्ष पर LinkedHashMap से पढ़ना संभव है। –
हाय, लिंक्ड हैशैप थ्रेड-सुरक्षित नहीं है और यह कतार के प्रकार का नहीं है। – sperumal
@ सेपरूमल- मैंने कभी इनकार नहीं किया कि इनमें से कोई भी मामला था। मैंने माना कि ओपी सिंक्रनाइज़ेशन कोड की आपूर्ति करेगा। साथ ही, मुझे विश्वास नहीं है कि कोई आवश्यकता है कि यह 'कतार' प्रकार का होना चाहिए; ओपी का सवाल कभी इसका उल्लेख नहीं करता है। यदि यह एक आवश्यकता है, तो यह दृष्टिकोण निश्चित रूप से काम नहीं करेगा। – templatetypedef
मैं तुम्हें EntrySet की एक पंक्ति बनाने की सलाह -
Queue<EntrySet<String,String>> queue = new SynchronousQueue<EntrySet<String,String>>();
for (EntrySet<String,String> entry:map.entrySet()) {
queue.add(entry);
}
आप कतार का एक और प्रकार है, जो आप गैर खाली ऐसे LinkedBlockingQueue के रूप में के मामले में तत्वों, और केवल prdocuer प्रतीक्षा करता है डाल सकते हैं उपयोग करने पर विचार कर सकते हैं।
निर्माता तब आवश्यकतानुसार एंट्रीसेट ऑब्जेक्ट्स के आधार पर एक मानचित्र को पुन: संकलित करने में सक्षम होगा।
हम्म यह एक अच्छी विधि की तरह लगता है। धन्यवाद, मैं इसे आज़मा दूंगा। एक सवाल यह है कि यह धागा सुरक्षित है? –
- 1. जावा में हैश मैप ऑब्जेक्ट के लिए प्राथमिकता कतार
- 2. हैश मैप
- 3. हैश मैप
- 4. हैश मैप
- 5. हैश मैप
- 6. एक हैश मैप थ्रेड-सुरक्षित विभिन्न चाबियों के लिए है?
- 7. हैश मैप
- 8. हैश मैप
- 9. हैश मैप
- 10. हैश मैप
- 11. AutoCompleteTextView onItem हैश मैप
- 12. ConcurrentModificationException और एक हैश मैप
- 13. हैश मैप लुकअप के लिए अनुकूलित
- 14. वीबी.नेट हैश मैप समकक्ष
- 15. क्या निजी सदस्यों के लिए हैश कोड एक नया हैश कोड उत्पन्न करना संभव है?
- 16. हैश मैप कुंजी
- 17. पुनरावृत्ति के दौरान हैश मैप कुंजी बदलना
- 18. जावा कंसूरेंट हैश मैप
- 19. NullPointerException हैश मैप
- 20. हैश मैप प्रोफाइलिंग
- 21. कस्टम हैश मैप कार्यान्वयन
- 22. एसटीएल प्राथमिकता कतार - क्या यह संभव है?
- 23. क्या एक्लिप्स साइडबार ऑटोहोइड बनाना संभव है?
- 24. ऐरेलिस्ट या हैश मैप
- 25. हैश मैप डी-सीरियलाइजेशन
- 26. क्या आरटीएल के लिए एचडब्ल्यू आधारित सिंथेसाइज़र बनाना संभव है?
- 27. हैश मैप और ट्रीमैप के बीच क्या अंतर है?
- 28. स्ट्रिंग टू हैश मैप जावा
- 29. जावा, हैश मैप
- 30. हैशसेट/हैश मैप जावा
धन्यवाद, यह एक आकर्षण काम करता था और इसे लागू करने के लिए त्वरित, आसान और स्पष्ट था –