मुझे लगता है कि मेरा प्रश्न काफी सरल है, हालांकि मुझे समाधान नहीं मिला, इसलिए मैंने यहां पूछने का फैसला किया। क्या मैं जरूरत है इस तरह एक कस्टम कुंजी प्रकार के साथ एक HashMap बनाना है:जावा हैश मैप को कस्टम कुंजी प्रकार के साथ कैसे ठीक से काम करने के लिए?
HashMap<Pair<Integer, Integer>, StrategyPoint> myMap = new HashMap<Pair<Integer, Integer>, StrategyPoint>();
हालांकि मैं कुछ यहाँ याद आ रही है, क्योंकि HashMap ठीक से काम करना बंद कर देता। सबसे पहले कुंजी अनूठी नहीं होती है और समान मूल्य वाले जोड़े के अलग-अलग उदाहरण कुंजीसेट में पाए जा सकते हैं। इसके अलावा इसमें मुख्य फ़ंक्शन काम नहीं करता है जिस तरह से मुझे लगता है :)। मैं स्पष्ट रूप से कुछ याद करता हूं और अधिक संभावना है कि मुझे किसी भी तरह से अपने जोड़े वर्ग से अपने उदाहरणों की तुलना करने के तरीके को परिभाषित करना चाहिए। हालांकि मैंने तुलनात्मक रूप से तुलना करने की कोशिश की तुलना में मेरी जोड़ी कक्षा में और यह अभी भी काम नहीं करता है। कोई सुझाव?
मेरा मूल कोड थोड़े गन्दा और पढ़ने के लिए असभ्य है, इसलिए मैंने यहां अपनी समस्या को स्पष्ट करने के लिए एक उदाहरण बनाया है।
HashMap<Pair<Integer, Integer>, StrategyPoint> myMap = new HashMap<Pair<Integer, Integer>, StrategyPoint>();
Pair<Integer, Integer> myPair = new Pair<Integer, Integer>(2,2);
StrategyPoint myPoint= new StrategyPoint(2, 2, 5, 5, false);
myMap.put(myPair, myPoint);
Pair<Integer, Integer> searcher = new Pair<Integer, Integer> (0,0);
searcher.setFirst(2);
searcher.setSecond(2);
System.out.println(myMap.containsKey(searcher));
System.out.println(myMap.containsKey(myPair));
निष्पादन से परिणाम है::
झूठी
सच
मैं डिबग यह और खोजकर्ता उदाहरण ठीक से आबादी beeing है है, लेकिन यह HashMap लगता है यहाँ कोड है इसे अपने कीसेट में ढूंढने से इंकार कर दिया।
मदद लोगों के लिए धन्यवाद!
प्रत्येक जावा शुरुआती, जल्द ही या बाद में, बराबर/हैशकोड मुद्दे का सामना करेगा! – gd1
मुझे इसकी एक मानक समस्या पता था। धन्यवाद यह कोशिश करेंगे! –
@ gd1 बिंदु पर !!! –