उदाहरण
import java.io.*;
import java.util.*;
public class Demo {
static void sortObjects(String myData) {
String[] myVals = myData.split(" ");
Map> myMap = new TreeMap<>();
for (int i = 1; i < myVals.length; i += 2) {
int myAge = Integer.parseInt(myVals[i]);
String name = myVals[i - 1];
if (myMap.containsKey(myAge)) {
ArrayList myList = myMap.get(myAge);
myList.add(name);
Collections.sort(myList);
myMap.remove(myAge);
myMap.put(myAge, myList);
} else {
ArrayList myList = new ArrayList<>();
myList.add(name);
myMap.put(myAge, myList);
}
}
for (Map.Entry> entry : myMap.entrySet()) {
ArrayList al1 = entry.getValue();
for (int i = 0; i < al1.size(); i++)
System.out.print(al1.get(i) + " " + entry.getKey() + " ");
}
}
public static void main(String args[]) {
String myObj = "Joe 36 Hannah 24 Jill 13 Jack 1 Preet 8 Deep 45";
System.out.println("सॉर्टिंग के बाद ऑब्जेक्ट्स हैं: ");
sortObjects(myObj);
}
}
आउटपुट
सॉर्टिंग के बाद ऑब्जेक्ट्स हैं: Jack 1 Preet 8 Jill 13 Hannah 24 Joe 36 Deep 45
व्याख्या: Demo क्लास में 'sortObjects' नामक एक फंक्शन होता है जो एक हैशमैप बनाता है जो इंटीजर और ऐरे लिस्ट को मैप करता है। यह मानों के माध्यम से पुनरावृति करता है, और जांचता है कि कौन सा स्ट्रिंग है और कौन सा इंटीजर तत्व है और इन्हें इंटीजर मानों के आधार पर सॉर्ट किया जाता है। मुख्य फंक्शन में, स्ट्रिंग ऑब्जेक्ट बनाया जाता है और इस स्ट्रिंग ऑब्जेक्ट पर फंक्शन को कॉल किया जाता है और प्रासंगिक संदेश कंसोल पर प्रदर्शित होता है।
TreeMap विशेषताएं:
- Red-Black ट्री पर आधारित NavigableMap कार्यान्वयन
- कुंजियों को उनके नैचुरल ऑर्डरिंग या Comparator के अनुसार सॉर्ट करता है
- containsKey, get, put, remove: O(log n) समय जटिलता
- Null कुंजी अनुमत नहीं (NullPointerException फेंकता है)
सही तरीका: Comparable/Comparator के साथ:
class Person implements Comparable {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public int compareTo(Person other) {
return Integer.compare(this.age, other.age);
}
@Override
public String toString() {
return name + " " + age;
}
}
// उपयोग:
TreeMap> map = new TreeMap<>();
// या सिंपल लिस्ट सॉर्टिंग:
List people = Arrays.asList(
new Person("Joe", 36), new Person("Hannah", 24),
new Person("Jill", 13), new Person("Jack", 1)
);
people.sort(Comparator.comparing(Person::getAge));
// या
people.sort(Comparator.comparing(Person::getAge).thenComparing(Person::getName));
TreeMap vs HashMap vs LinkedHashMap:
| विशेषता | HashMap | LinkedHashMap | TreeMap |
|---|---|---|---|
| क्रम | कोई गारंटी नहीं | इंसर्शन क्रम | सॉर्टेड (कुंजी) |
| Null कुंजी | 1 अनुमत | 1 अनुमत | अनुमत नहीं |
| समय जटिलता | O(1) | O(1) | O(log n) |
| कार्यान्वयन | हैश टेबल | हैश टेबल + लिंक्ड लिस्ट | रेड-ब्लैक ट्री |