2012-12-22 14 views
5

मुझे जावा जेनेरिक कक्षा किसी भी प्रकार के अनियमित जोड़े का प्रतिनिधित्व करने की आवश्यकता है।जावा में अनॉर्डर्ड जोड़ी

  • HashSet (Pair(a, b) और Pair(b, a) बराबर करने के लिए) जोड़ी तत्वों
  • एक Pair वर्ग ओवरराइड hashCode और equals साथ स्टोर करने के लिए: इस बीच मैं दो समाधान देखते हैं।

क्या यह समझ में आता है? आप क्या सुझाव देंगे?

+0

किसी भी प्रकार के 'अनियंत्रित पेरिस' के कंटेनर को लिखने का आपका कारण क्या है? –

+2

संभव डुप्लिकेट [जावा में सी ++ जोड़े के बराबर क्या है?] (Http://stackoverflow.com/questions/156275/what-is-the-equivalent-of-the-c-pairl-r-in -जावा) –

+3

@AndrewLogvinov आप उदाहरण के लिए unordered ग्राफ के किनारों पर विचार कर सकते हैं। 'एज (v1, v2)' एज (v2, v1) 'के बराबर है। – Michael

उत्तर

3

आपकी जगह में मैं अपनी कक्षा तैयार करूंगा। जब तक आप HashMap का उपयोग करके केवल दो वस्तुओं के सेट में रूचि रखते हैं, HashSet (जो संयोगवश, HashMap आंतरिक रूप से वैसे भी उपयोग करता है) या मनमाने ढंग से cardinality के सेट के लिए डिज़ाइन की गई कोई अन्य कक्षा संसाधनों की बर्बादी है और अनियंत्रित जटिलता को जोड़ती है।

उचित equals() और hashCode() कार्यान्वयन के साथ बस अपनी कक्षा बनाएं। ऑपरेशन, या Set इंटरफ़ेस के हिस्सों को कार्यान्वित करने के साथ, यह भी समझ में आ सकता है।

एक महत्वपूर्ण नोट: सुनिश्चित करें कि आप दस्तावेज़ अपने वर्ग बड़े पैमाने पर - कम से कम है कि क्या equals() एक पहचान या निहित वस्तुओं के लिए एक समानता तुलना करता है, और एक null निहित संदर्भ का अर्थ क्या है निर्दिष्ट ...

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