मेरी विनम्र राय में, LazerBanana का उत्तर शीर्ष रेटेड उत्तर होना चाहिए और स्वीकार किया जाना चाहिए क्योंकि सभी अन्य उत्तर java.util.TreeSet(या पहले सूची में कनवर्ट करें फिर Collections.sort(...)परिवर्तित सूची पर कॉल करने के लिए) जो ओपी से पूछने के लिए परेशान नहीं थे कि आपके HashSetपास किस तरह की वस्तुएं हैं। यदि उन तत्वों की पूर्वनिर्धारित प्राकृतिक व्यवस्था है या नहीं और यह वैकल्पिक प्रश्न नहीं है बल्कि एक अनिवार्य प्रश्न है।
यदि आप पहले से ही इंटरफ़ेस को लागू नहीं करते हैं या यदि आप स्पष्ट रूप से कंस्ट्रक्टर में नहीं जा रहे हैं, तो आप अपने HashSetतत्वों को अंदर नहीं ले जा सकते हैं और अपने तत्वों को डालना शुरू नहीं कर सकते हैं । TreeSetComparableComparatorTreeSet
से TreeSetJavaDoc,
एक नया, खाली पेड़ सेट का निर्माण करता है, जो उसके तत्वों के प्राकृतिक क्रम के अनुसार क्रमबद्ध होता है। सेट में सम्मिलित सभी तत्वों को तुलनात्मक इंटरफ़ेस को लागू करना चाहिए। इसके अलावा, ऐसे सभी तत्वों का परस्पर तुलनात्मक होना आवश्यक है: e1.compareTo (e2) को सेट में किसी भी तत्व e1 और e2 के लिए ClassCastException को नहीं फेंकना चाहिए। यदि उपयोगकर्ता सेट में एक तत्व जोड़ने का प्रयास करता है जो इस बाधा का उल्लंघन करता है (उदाहरण के लिए, उपयोगकर्ता एक स्ट्रिंग तत्व को एक सेट में जोड़ने का प्रयास करता है जिसके तत्व पूर्णांक हैं), तो ऐड कॉल एक ClassCastException को फेंक देगा।
यही कारण है कि केवल सभी जावा 8 स्ट्रीम आधारित उत्तर - जहां आप अपने तुलनित्र को मौके पर परिभाषित करते हैं - केवल समझ में आता है क्योंकि POJO में तुलनीय लागू करना वैकल्पिक हो जाता है। प्रोग्रामर को जरूरत पड़ने पर तुलनित्र को परिभाषित करता है। TreeSetइस मूलभूत प्रश्न को पूछे बिना संग्रह करने की कोशिश करना भी गलत है (निंजा का जवाब)। ऑब्जेक्ट प्रकारों को मान लेना Stringया Integerगलत भी है।
कहा कि, अन्य चिंताओं की तरह,
- क्रमबद्ध प्रदर्शन
- मेमोरी फ़ुट प्रिंट (मूल सेट को बनाए रखना और नए सॉर्ट किए गए सेट बनाना हर बार छँटाई किया जाता है या सेट को - जगह आदि में क्रमबद्ध करना चाहते हैं)
अन्य प्रासंगिक बिंदु भी होने चाहिए। केवल एपीआई की ओर इशारा केवल इरादा नहीं होना चाहिए।
चूँकि ओरिजिनल सेट में पहले से ही केवल अनोखे तत्व होते हैं और डेटा को डुप्लिकेट किए जाने के बाद से सेट किए गए मूल सेट को स्मृति से साफ़ करने की आवश्यकता होती है, इसलिए हल किए गए सेट से भी बाधा बनी रहती है।
HashSetएक अनियोजित संग्रह है।