treeset java tutorial with programming examples
यह ट्यूटोरियल ट्रीसेट क्लास, इम्प्लीमेंटेशन, इटरेशन, ट्रीसेट बनाम हैशसेट, जावा ट्रीसेट उदाहरण, आदि के बारे में बताता है।
जावा में ट्रीसेट सेट इंटरफ़ेस (अधिक विशेष रूप से सॉर्टसेट) को लागू करता है। TreeSet डेटा संग्रहीत करने के लिए आंतरिक रूप से एक TreeMap का उपयोग करता है। डिफ़ॉल्ट रूप से, ट्रीसेट की वस्तुओं या तत्वों को आरोही क्रम में प्राकृतिक क्रम के अनुसार संग्रहीत किया जाता है।
ट्रीसेट क्लास जो जावा में ट्रीसेट को लागू करता है, able नेविगेबलसेट ’इंटरफेस को लागू करता है और एब्सट्रैक्ट क्लास भी इनहेरिट करता है।
=> जावा प्रशिक्षण ट्यूटोरियल के ए-जेड को देखने के लिए यहां देखें।
आप क्या सीखेंगे:
जावा में ट्रीसेट
ध्यान दें कि विशिष्ट कंस्ट्रक्टर प्रोटोटाइप का उपयोग करके ट्रीसेट ऑब्जेक्ट बनाने के समय कस्टमाइज़र को प्रदान करके ट्रीसेट तत्वों को भी स्पष्ट रूप से ऑर्डर किया जा सकता है।
नीचे दिए गए ट्रीसेट के कुछ महत्वपूर्ण लक्षण दिए गए हैं:
- ट्रीसेट क्लास सॉर्टेडसेट इंटरफ़ेस को लागू करता है। यह डुप्लिकेट तत्वों की अनुमति नहीं देता है।
- ट्रीसेट क्लास सिंक्रनाइज़ नहीं है।
- ट्रीसेट इंसर्शन ऑर्डर को संरक्षित नहीं करता है लेकिन ट्रीसेट में तत्वों को प्राकृतिक ऑर्डर के अनुसार क्रमबद्ध किया जाता है।
- ट्रीसेट ऑब्जेक्ट बनाते समय ट्रीसेट को एक कस्टम तुलनित्र का उपयोग करके आदेश दिया जा सकता है।
- ट्रीसेट का उपयोग आमतौर पर बड़ी मात्रा में सूचनाओं को संग्रहीत करने के लिए किया जाता है जो स्वाभाविक रूप से सॉर्ट की जाती हैं। यह आसान और तेज़ पहुँच में सहायक है।
ट्रीसेट क्लास डिक्लेरेशन
जावा 'ट्रीसेट' नामक एक वर्ग प्रदान करता है जिसमें ट्रीसेट डेटा संरचना की कार्यक्षमता शामिल है। ट्रीसेट क्लास java.util पैकेज का एक हिस्सा है।
ट्रीसेट क्लास को जावा प्रोग्राम में शामिल करने के लिए, हमें नीचे दिए गए आयात विवरण का उपयोग करना चाहिए:
import java.util.TreeSet;
या
import java.util.*;
ट्रीसेट वर्ग की एक सामान्य घोषणा है:
public class TreeSet extends AbstractSet implements NavigableSet, Cloneable, Serializable
जैसा कि कक्षा की घोषणा से देखा गया है, ट्रीसेट क्लास ने एब्सट्रैक्ट और इम्प्लीमेंटेशन नेविगेबलसेट, क्लोन करने योग्य, और सीरियल करने योग्य इंटरफेस का विस्तार किया।
ट्रीसेट क्लास के लिए एक श्रेणी पदानुक्रम नीचे दिया गया है:
आंतरिक कार्यान्वयन
हम जानते हैं कि ट्रीसेट नेवीगसेटसेट इंटरफ़ेस को लागू करता है और सॉर्टेडसेट क्लास को विस्तारित करता है।
आंतरिक रूप से, ट्रीसेट कंस्ट्रक्टर को निम्नानुसार परिभाषित किया गया है:
public TreeSet() { this(new TreeMap()); }
जैसा कि TreeSet की उपरोक्त कंस्ट्रक्टर परिभाषा में देखा गया है, ट्रीपॉइंट ऑब्जेक्ट को आमंत्रित किया गया है। इस प्रकार आंतरिक रूप से, यह एक ट्रीपॉइंट ऑब्जेक्ट है जो ट्रीसेट के लिए कार्यान्वित किया जाता है। इसलिए TreeSet में एक तत्व जोड़ते समय, एक कुंजी TreeMap में जोड़ा जाता है जिसमें कुंजियों को डिफ़ॉल्ट रूप से क्रमबद्ध किया जाता है।
के अनुसार ट्रीसेट पर ओरेकल प्रलेखन ,
'ट्रीशेट एक ट्रीग्राफ़ पर आधारित एक नेविगेबल सेट है।'
जावा ट्रीसेट उदाहरण
निम्नलिखित जावा प्रोग्राम एक सरल उदाहरण दिखाता है जो ट्रीसेट प्रदर्शित करता है। इस कार्यक्रम में, हमने एक साधारण रंग ट्रीसेट को परिभाषित किया है। हम इसमें तत्व जोड़ते हैं और फिर इसे प्रदर्शित करते हैं। ध्यान दें कि तत्वों को प्राकृतिक आदेश के अनुसार प्रदर्शित किया जाता है।
import java.util.*; class Main{ public static void main(String args()){ //Create and add elements to TreeSet TreeSet color_TreeSet=new TreeSet(); color_TreeSet.add('Red'); color_TreeSet.add('Green'); color_TreeSet.add('Blue'); color_TreeSet.add('Yellow'); //Traverse the TreeSet and print elements one by one System.out.println('TreeSet Contents:'); Iterator iter=color_TreeSet.iterator(); while(iter.hasNext()){ System.out.print(iter.next() + ' '); } } }
आउटपुट:
ट्रीसेट सामग्री:
नीला हरा लाल पीला
ट्रीसेट के माध्यम से Iterate
ट्रीसेट के व्यक्तिगत तत्वों को एक्सेस करने के लिए, हमें ट्रीसेट के माध्यम से या दूसरे शब्दों में ट्रीसेट के माध्यम से पुनरावृति करने की आवश्यकता है।
हम ट्रीसेट के लिए Iterator घोषित करके ऐसा करते हैं और फिर प्रत्येक तत्व तक पहुँचने के लिए इस Iterator का उपयोग करते हैं। इसके लिए, हम एक पुनरावृत्ति के अगले () पद्धति का उपयोग करते हैं जो ट्रीसेट में अगला तत्व लौटाता है।
निम्न जावा प्रोग्राम ट्रीसेटर के माध्यम से पुनरावृति करने के लिए Iterator के उपयोग को प्रदर्शित करता है।
import java.util.TreeSet; import java.util.Iterator; class Main { public static void main(String() args) { //create and initialize TreeSet TreeSet num_Treeset = new TreeSet(); num_Treeset.add(20); num_Treeset.add(5); num_Treeset.add(15); num_Treeset.add(25); num_Treeset.add(10); System.out.println('TreeSet: ' + num_Treeset); // Call iterator() method to define Iterator for TreeSet Iterator iter_set = num_Treeset.iterator(); System.out.print('TreeSet using Iterator: '); // Access TreeSet elements using Iterator while(iter_set.hasNext()) { System.out.print(iter_set.next()); System.out.print(', '); } } }
आउटपुट:
ट्रीसेट: (५, १०, १५, २०, २५)
ट्रीटर Iterator का उपयोग कर: 5, 10, 15, 20, 25,
Android के लिए शीर्ष 10 संगीत डाउनलोडर
ट्रीसैट तुलनित्र जावा में
डिफ़ॉल्ट रूप से, ट्रीसेट स्वाभाविक रूप से ऑर्डर किया जाता है। हम एक नए तुलनित्र वर्ग को परिभाषित करके अनुकूलित क्रम में ट्रीसेट को भी सॉर्ट कर सकते हैं। इस तुलनित्र वर्ग में, हमें ट्रीसेट के तत्वों को सॉर्ट करने के लिए 'तुलना' विधि को ओवरराइड करने की आवश्यकता है। इस तुलनित्र वस्तु को फिर ट्रीसेट कंस्ट्रक्टर के पास भेज दिया जाता है।
निम्नलिखित जावा प्रोग्राम ट्रीएससेट को सॉर्ट करने के लिए एक तुलनित्र के उपयोग को दर्शाता है।
import java.util.TreeSet; import java.util.Comparator; class Main { public static void main(String() args) { // Create a TreeSet with user-defined comparator TreeSet cities = new TreeSet(new cities_Comparator()); //add elements to the comparator cities.add('Pune'); cities.add('Hyderabad'); cities.add('Indore'); cities.add('Bangaluru'); //print the contents of TreeSet System.out.println('TreeSet: ' + cities); } // Create a comparator class public static class cities_Comparator implements Comparator { //override compare method to compare two elements of the TreeSet @Override public int compare(String cities_one, String cities_two) { int value = cities_one.compareTo(cities_two); // sort elements in reverse order if (value > 0) { return -1; } else if (value <0) { return 1; } else { return 0; } } } }
आउटपुट:
ट्रीसेट: (पुणे, इंदौर, हैदराबाद, बंगालुरु)
उपरोक्त कार्यक्रम दिए गए ट्रीसेट को क्रमबद्ध रूप से रिवर्स ऑर्डर में क्रमबद्ध करने के लिए एक तुलनित्र वर्ग को लागू करता है।
अनुशंसित पढ़ना = >> जावा तुलनित्र इंटरफ़ेस
TreeSet एपीआई / तरीके और निर्माता
इस खंड में, हम ट्रीसेट वर्ग के एपीआई पर चर्चा करेंगे। यहां हम ट्रीसेट क्लास द्वारा प्रदान किए गए कंस्ट्रक्टरों और विधियों पर चर्चा करेंगे।
ट्रीसेट क्लास एक ट्रीसेट ऑब्जेक्ट का निर्माण करने के लिए अतिभारित कंस्ट्रक्टर प्रदान करता है।
हमने इन कंस्ट्रक्टरों को सारणीबद्ध किया है:
कंस्ट्रक्टर्स
कंस्ट्रक्टर प्रोटोटाइप | विवरण | |
---|---|---|
शामिल | बूलियन होता है (ऑब्जेक्ट ओ) | यदि ट्रीसेट में दिए गए तत्व शामिल हैं, तो चेक करता है; अगर मौजूद है तो सच है। |
ट्रीसेट () | एक नया, खाली ट्रीसेट ऑब्जेक्ट बनाने के लिए डिफ़ॉल्ट कंस्ट्रक्टर। | |
ट्रीसेट (संग्रह सी) | एक नया ट्रीसेट ऑब्जेक्ट बनाता है जिसमें दिए गए संग्रह सी से तत्वों को शामिल किया गया है, प्राकृतिक क्रम के अनुसार क्रमबद्ध किया गया है। | |
ट्रीसेट (तुलनित्र तुलनित्र) | एक नया ट्रीसेट ऑब्जेक्ट बनाता है जो खाली है और निर्दिष्ट तुलनित्र के अनुसार क्रमबद्ध किया जाएगा। | |
ट्रीसेट (सॉर्टसेटसेट) | एक नया ट्रीसेटसेट बनाता है जिसमें दिए गए सॉर्टसेट से तत्व होते हैं। |
तरीकों
इसके बाद, ट्रीसेट वर्ग द्वारा प्रदान किए गए विभिन्न तरीकों को सारणीबद्ध करें।
तरीका | विधि प्रोटोटाइप | विवरण |
---|---|---|
जोड़ना | बूलियन ऐड (E e) | यदि पहले से ही नहीं है, तो ट्रीसेट को तत्व दिया जाता है। |
सभी जोड़ें | बूलियन addAll (संग्रह सी) | दिए गए संग्रह में सभी तत्वों को सेट में जोड़ता है। |
अधिकतम सीमा | ई छत (ई ई) | ई (कम से कम तत्व) से अधिक या बराबर तत्व देता है; या अशक्त अगर कोई तत्व मौजूद नहीं है। |
स्पष्ट | शून्य स्पष्ट () | ट्रीसेट से सभी तत्वों को हटाता है। |
क्लोन | ऑब्जेक्ट क्लोन () | ट्रीसेट ऑब्जेक्ट की उथली प्रति लौटाता है। |
COMPARATOR | तुलनित्र तुलनित्र () | प्राकृतिक ऑर्डरिंग का उपयोग करने पर ट्रीसेट या नल के लिए तुलनित्र लौटाता है। |
अवरोही | Iterator descendingIterator () | ट्रीसेट में तत्वों पर अवरोही पुनरावृत्ति देता है। |
उतरता हुआ | NavigableSet अवरोही () | ट्रीसेट में तत्वों का एक दृश्य रिवर्स ऑर्डर में देता है। |
प्रथम | ई प्रथम () | ट्रीसेट में सबसे पहले या सबसे कम तत्व देता है। |
मंज़िल | ई मंजिल (ई ई) | वह तत्व लौटाता है जो ट्रीसेट में दिए गए तत्व e से कम या बराबर होता है। यदि ऐसा कोई तत्व नहीं है, तो अशक्त हो जाता है। |
हेडसेट | SortedSet हेडसेट (EElement) | ऐसे तत्वों का एक सेट लौटाता है जो दी गई आयतन से कड़ाई से कम हैं |
NavigableSet हेडसेट (EElement, बूलियन इन्क्लूसिव) | ऐसे तत्वों का एक सेट लौटाता है जो (यदि = सत्य) के बराबर हैं या दिए गए से कम हैं। | |
उच्चतर | ई उच्च (ई ई) | इस सेट में सबसे कम तत्व दिए गए तत्व की तुलना में कड़ाई से अधिक है, या ऐसा कोई तत्व न होने पर शून्य हो जाता है। |
खाली है | बूलियन इम्प्टी () | जाँच करता है कि ट्रीसेट खाली है या नहीं। खाली होने पर वापस लौटता है। |
इटरेटर | इटरेटर इटरेटर () | ट्रीसेट के लिए एक पुनरावृत्ति (आरोही क्रम में) देता है। |
पिछले | ई अंतिम () | ट्रीसेट में उच्चतम या अंतिम तत्व देता है। |
कम | ई लोअर (ई ई) | तत्व (सबसे बड़ा तत्व) देता है जो ट्रीसेट में दिए गए तत्व ई से कड़ाई से कम है। |
प्रदुषण | ई प्रदूषण | सेट में पहले (सबसे कम) तत्व को निकालता है और लौटाता है; शून्य यदि सेट खाली है। |
प्रदूषण | ई पोलास्ट () | सेट में अंतिम (सबसे बड़ा) तत्व निकालता है और वापस करता है; शून्य अगर खाली सेट। |
हटाना | बूलियन निकालें (ऑब्जेक्ट ओ) | सेट से दिए गए तत्व को निकालता है। |
आकार | int आकार () | ट्रीसेट में मौजूद तत्वों का आकार या संख्या लौटाता है। |
सबसेट | NavigableSet सबसेट (E fromlement, बूलियन inInclusive, E toElement, बूलियन InInlusive) | एलिमेंट से लेकर एलिमेंट तक के एलिमेंट्स का व्यू देता है। |
सॉर्टसेटसेट सबसेट (ई फ़्रीमेंट, ई-ईमेंटमेंट) | रिटर्न को एलिमेंट (समावेशी) से लेकर एलिमेंट (एक्सक्लूसिव) तक ले जाता है। | |
टेलसेट | सॉर्टसेटसेट टेलसेट (E fromElement) | ऐसे दृश्य देता है जिसमें दिए गए तत्व से अधिक या बराबर हैं। |
NavigableSet tailSet (E fromElement, बूलियन समावेशी) | तत्वों का एक दृश्य रिटर्न (यदि समावेशी सत्य है) के बराबर या fromElement से अधिक है। |
ट्रीसेट इन जावा 8
कृपया ध्यान दें कि ट्रीसेट के लिए, जावा 8 संस्करण में कोई बड़े बदलाव नहीं हुए हैं। सभी तरीके और निर्माता जावा 8 और बाद के संस्करणों में काम करते हैं।
ट्रीसेट कार्यान्वयन जावा में
उपरोक्त चर्चा की गई ट्रीशेट विधियों में से निम्नलिखित जावा प्रोग्राम को लागू करता है।
import java.util.Iterator; import java.util.TreeSet; import java.util.ArrayList; public class Main { public static void main(String() args) { //create a TreeSet of numbers TreeSet numSet = new TreeSet(); //add () method numSet.add(30); numSet.add(10); //declare and initialize an ArrayList ArrayList myList = new ArrayList(); myList.add(15); myList.add(25); myList.add(35); //addAll () method : add ArrayList elements to TreeSet numSet.addAll(myList); //define an iterator on TreeSet Iterator iterator = numSet.iterator(); System.out.print('Tree set contents: '); while (iterator.hasNext()) System.out.print(iterator.next() + ' '); System.out.println(); //ceiling () System.out.println('ceiling(25):' + numSet.ceiling(25)); //floor () System.out.println('floor(25):' + numSet.floor(25)); //contains () System.out.println('TreeSet contains(15):' + numSet.contains(15)); // isEmpty () if (numSet.isEmpty()) System.out.print('Tree Set is empty.'); else System.out.println('Tree Set size: ' + numSet.size()); // first () System.out.println('TreeSet First element: ' + numSet.first()); // last () System.out.println('TreeSet Last element: ' + numSet.last()); // remove () if (numSet.remove(30)) System.out.println('Element 30 removed from TreeSet'); else System.out.println('Element 30 doesn't exist!'); System.out.print('TreeSet after remove (): '); iterator = numSet.iterator(); while (iterator.hasNext()) System.out.print(iterator.next() + ' '); System.out.println(); //size () System.out.println('TreeSet size after remove (): ' + numSet.size()); //Headset () System.out.println('Headset : ' + numSet.headSet(35)); // clear () numSet.clear(); System.out.println('Tree Set size after clear (): ' + numSet.size()); } }
आउटपुट:
ट्री सेट सामग्री: 10 15 25 30 35
छत (25): 25
मंजिल (25): 25
ट्रीसेट में शामिल (15): सच
ट्री सेट का आकार: 5
ट्रीसेट प्रथम तत्व: १०
ट्रीसेट अंतिम तत्व: 35
ट्रीसेट से तत्व 30 निकाला गया
हटाने के बाद ट्रीसेट (): 10 15 25 35
हटाने के बाद ट्रीसेट आकार (): 4
हेडसेट: (१०, १५, २५)
स्पष्ट के बाद ट्री सेट का आकार (): 0
उपरोक्त कार्यक्रम में, हम ट्रीसेट ऑब्जेक्ट को परिभाषित करते हैं और फिर it ऐड ’विधि का उपयोग करके इसमें तत्व जोड़ते हैं। अगला, हम एक ArrayList को परिभाषित करते हैं। फिर हम 'AddAll' पद्धति का उपयोग करके ट्रीसैट में ArrayList के तत्व जोड़ते हैं। बाद में, हम विभिन्न ट्रीसेट विधियों जैसे कि इटरेटर, सीलिंग, फ़्लोर, फर्स्ट, लास्ट, समाहित, आकार, इस्मिप्टी, इत्यादि को प्रदर्शित करते हैं।
ट्रीसेट बनाम हैशसेट
ट्रीसेट और हैशसेट के बीच कुछ अंतरों को देखें।
ट्रीसेट | हैशसेट |
---|---|
प्राकृतिक आदेश के अनुसार तत्वों का आदेश दिया जाता है। | तत्वों का आदेश नहीं दिया जाता है। |
इस तरह के TreeSet की तुलना में डालने, हटाने और खोज जैसे कार्यों के लिए O (लॉग एन) समय लेता है। | बेसिक ऑपरेशंस जैसे इन्सर्ट, डिलीट और सर्च करने के लिए लगातार समय लेता है ताकि ट्रीसेट से अधिक तेजी से इसे बनाया जा सके। |
अशक्त वस्तुओं की अनुमति नहीं है। | अशक्त वस्तु की अनुमति देता है। |
दो वस्तुओं की तुलना करने के लिए ComparTo () विधि का उपयोग करता है। | दो वस्तुओं की तुलना करने के लिए तुलना () और बराबर () विधि का उपयोग करता है। |
आंतरिक रूप से नेविगेबल ट्रीपैप का उपयोग करके कार्यान्वित किया गया। | HashMap का उपयोग करके आंतरिक रूप से कार्यान्वित किया गया। |
समृद्ध कार्यक्षमता एपीआई है जो विभिन्न जोड़तोड़ कर सकती है। | हैशसेट की कार्यक्षमता एपीआई बल्कि सीमित है। |
बार बार पूछे जाने वाले प्रश्न
Q # 1) ट्रीसेट क्या है?
उत्तर: ट्रीसेट सॉर्टेडसेट का कार्यान्वयन है जो डुप्लिकेट मानों की अनुमति नहीं देता है। ट्रीसेट में तत्व आरोही क्रम में डिफ़ॉल्ट रूप से क्रमबद्ध हैं।
क्यू # 2) आप जावा में ट्रीसेट में तत्वों को कैसे जोड़ते हैं?
उत्तर: ट्रीसेट क्लास एक ऐड मेथड प्रदान करती है जिसका उपयोग ट्रीसेट में किसी विशिष्ट तत्व को जोड़ने के लिए किया जाता है। यह provides addAll ’विधि भी प्रदान करता है। यह विधि किसी अन्य संग्रह को एक तर्क के रूप में स्वीकार करती है और फिर इस संग्रह के सभी तत्वों को ट्रीसेट में जोड़ देती है।
क्यू # 3) क्या ट्रीसेट थ्रेड सुरक्षित है?
उत्तर: नहीं। TreeSet थ्रेड-सुरक्षित नहीं है। इस प्रकार हमें इस बात का ध्यान रखना चाहिए कि हम ट्रीसेट को बहु-थ्रेडेड वातावरण में कैसे संचालित करते हैं।
क्यू # 4) क्या ट्रीसेट में डुप्लिकेट हो सकते हैं?
उत्तर: नहीं। ट्रीसेट डुप्लिकेट की अनुमति नहीं देता है।
क्यू # 5)क्या TreeSet जावा में शून्य की अनुमति देता है?
उत्तर: हाँ। हम ट्रीसेट में शून्य तत्व रख सकते हैं।
निष्कर्ष
यह ट्रीसेट पर हमारे ट्यूटोरियल को पूरा करता है। ट्रीसेट एक सॉर्टसेटसेट कार्यान्वयन है जो डुप्लिकेट की अनुमति नहीं देता है लेकिन अशक्त मूल्यों की अनुमति देता है। ट्रीसेट में तत्व आरोही क्रम में प्राकृतिक क्रम के अनुसार डिफ़ॉल्ट रूप से क्रमबद्ध हैं।
हमने इसकी घोषणा और विभिन्न निर्माणकर्ताओं और विधियों के साथ ट्रीसेट क्लास की मूल बातें देखी हैं।
हमारे बाद के ट्यूटोरियल में, हम शेष जावा संग्रह कक्षाओं पर चर्चा करते हैं।
=> यहाँ सरल जावा प्रशिक्षण श्रृंखला देखें।
अनुशंसित पाठ
- जावा में द्विआधारी खोज ट्री - कार्यान्वयन और कोड उदाहरण
- जावा में ट्रीमैप - ट्यूटोरियल जावा ट्रीपैप उदाहरणों के साथ
- जावा वेक्टर क्या है | उदाहरणों के साथ जावा वेक्टर क्लास ट्यूटोरियल
- जावा स्कैनर क्लास ट्यूटोरियल उदाहरण के साथ
- जावा ऐरे क्लास ट्यूटोरियल - java.util.Arays क्लास उदाहरण के साथ
- जावा ट्यूटोरियल फॉर बिगिनर्स: 100+ हैंड्स-ऑन जावा वीडियो ट्यूटोरियल
- जावा स्ट्रिंग में () उदाहरण के साथ विधि ट्यूटोरियल शामिल हैं
- जावा में दांतेदार सरणी - उदाहरणों के साथ ट्यूटोरियल