जावा 6 TreeSet<E>
प्रलेखन से नहीं ले करता है? केवल एक ही वस्तु जिसे जोड़ा जा सकता है, टाइप ई है, इसलिए यह एकमात्र हटाने योग्य प्रकार प्रकार का होना चाहिए E.क्यों जावा के TreeSet <E> निकालें (वस्तु) एक ई
उत्तर
remove()
, get()
की तरह जब एक बराबर तत्व दिए गए (.equals()
के संदर्भ में) काम करने के लिए आवश्यक है। जावा में, विभिन्न वर्गों की वस्तुओं के बराबर होने के लिए यह संभव है (और कुछ मामलों में, आवश्यक)। इसलिए, आपको इस प्रकार को प्रतिबंधित नहीं करना चाहिए।
ठीक है, प्रत्येक ई भी एक वस्तु है, और शायद आपके पास ई के रूप में ई नहीं है पल (उदाहरण के लिए एक इवेंट स्रोत से), जो आपके लिए सुविधाजनक बनाता है। अन्यथा आपको इसे हटाने के लिए इसे केवल ई पर डालना होगा।
समानता बिंदु से यह कोई फर्क नहीं पड़ता: दिए गए ऑब्जेक्ट का संदर्भ पता परीक्षण किया जाता है यदि यह किसी सेट की सामग्री के बराबर होता है, तो इससे कोई फर्क नहीं पड़ता कि यह कौन सी कक्षा है।
पहली टिप्पणी से जवाब लेना पोस्ट:
मिथक:
एक लोकप्रिय मिथक है कि यह बेवकूफ और बुराई है, लेकिन यह पिछली संगतता के कारण जरूरी हो गया था। लेकिन संगतता तर्क अप्रासंगिक है; एपीआई सही है कि आप संगतता पर विचार करें या नहीं।
रियल कारण:
समान रूप से, (और गूगल संग्रह पुस्तकालय) जावा संग्रह फ्रेमवर्क के तरीके कभी नहीं जब यह हो रहा से संग्रह को रोकने के लिए आवश्यक है को छोड़कर अपने मापदंडों के प्रकारों को प्रतिबंधित टूटा हुआ।
यहां अधिक पढ़ें: Why does Set.contains() take an Object, not an E?
यह वास्तव में एक समस्या है। अगर कोई remove(o)
और o
का प्रकार E
नहीं है, तो यह आमतौर पर एक प्रोग्रामिंग बग है जो गलत चीज़ को हटाने का प्रयास करता है। टाइपिंग जांच हमें बग से बचाने में विफल रही।
हालांकि एक अच्छा आईडीई (इंटेलिजे) ऐसे मुद्दों का पता लगा सकता है और हमें चेतावनी देता है, एपीआई डिजाइनरों को कंपाइलर प्रकार की जांच का उपयोग करने के लिए अधिक सटीक हस्ताक्षर प्रदान करना चाहिए था। (आईडीई यहाँ धोखा देती है -। यह Set.remove()
का अर्थ जानता है, क्योंकि यह एक मानक एपीआई है आईडीई कस्टम एपीआई के लिए एक ही मदद प्रदान नहीं करेगा)
जैसी क्वेरी एपीआई के लिए यह एक गैर E
तर्क और बदले स्वीकार करने के लिए ठीक है एक मामूली झूठा इसलिए हम remove()
तरह उत्परिवर्तन एपीआई के लिए दोनों
boolean contains(Object o);
boolean contains2(E o);
हो सकता है, यह बहस का मुद्दा है कि क्या यह एक गैर E
तर्क को स्वीकार करना चाहिए।हालांकि बहस की वास्तविकता को देखते हुए बहस चल रही है - वास्तव में कोई विकल्प नहीं है लेकिन गैर-ई तर्क स्वीकार करते हैं और इसके बारे में चुप रहें। फिर भी हम ज्यादातर मामलों में दो तरीकों
boolean remove(Object o);
boolean remove2(E o);
हो सकता है, प्रोग्रामर अतिरिक्त प्रकार की सुरक्षा के लिए contains2/remove2
कॉल कर सकते हैं।
क्या आप कह रहे हैं कि 'remove2/include2' TreeSet विधियां हैं? मैं एपीआई में नहीं देख रहा हूँ ... – ComputerDruid
- 1. Treeset आदेश
- 2. जावा जेनरिक, ई से ई
- 3. जावा एक ArrayList <TreeSet <Integer>> सूची <Set<Object>> में कनवर्ट क्यों नहीं कर सकता है?
- 4. जावा फेंक ई एंड्रॉयड
- 5. जावा: यदि मान हो सकता है की तुलना HashMap <स्ट्रिंग, वस्तु> एक वस्तु []
- 6. एक TreeSet को ArrayList में कनवर्ट करना?
- 7. कैसे एक जावा फ़ाइल वस्तु
- 8. जावा मानचित्र <K,V>: क्यों (वस्तु) प्राप्त नहीं (के)?
- 9. deserializing नक्शा <वस्तु, वस्तु> GSon
- 10. वस्तु जावा
- 11. एक सरणी जावा में एक वस्तु
- 12. वस्तु [] वर्ग के लिए [] जावा
- 13. उस वस्तु के आधार पर एक तुल्यकालन ब्लॉक के भीतर एक वस्तु (जावा)
- 14. जावा एक ऐरे से डुप्लिकेट निकालें?
- 15. जावा में एक इंटरफेस के लिए एक वस्तु डाली?
- 16. एक मेज वस्तु
- 17. जावा में एक वस्तु int है?
- 18. TreeSet आंतरिक ट्री-मैप का उपयोग करता है, तो यह Treeset
- 19. फ़ंक्शन (ई) {e.something ...} ई क्या है?
- 20. बनाना InetAddress वस्तु जावा
- 21. जावा जेनरिक टी वस्तु
- 22. जावा में अंतिम वस्तु
- 23. जावा वस्तु क्रमबद्धता और विरासत
- 24. जावा 0 स्ट्रिंग से निकालें
- 25. जावा में एक वस्तु को सजाने के लिए कैसे
- 26. कारण है कि यह बेहतर है तो treeset
- 27. जावा क्लासेस से स्ट्रिंग निकालें
- 28. वस्तु निर्माण के दौरान जावा ओवरराइड
- 29. स्कैला में बाध्य जेनेरिक (जैसा कि <ई जावा में MyClass> बढ़ाता है)
- 30. वस्तु को शून्य क्यों डाला?
संबंधित: http://stackoverflow.com/questions/857420/what-are-the-reasons-why-map-getobject-key-is-not-fully-generic –
संभव डुप्लिकेट [जावा क्यों नहीं हैं संग्रह जेनेरिक तरीकों को हटाते हैं?] (Http://stackoverflow.com/questions/104799/why-arent-java-collections-remove-methods-generic) – PhoneixS