Arrays और Collections की व्यावहारिक Sorting
वास्तविक उदाहरणों से product lists, leaderboards और event schedules पर sorting लागू करें।
Arrays और Collections की व्यावहारिक Sorting, CoddyKit पर Java Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Java Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
व्यवहार में क्रमबद्ध करना
यह पाठ वास्तविक परिस्थितियों में क्रमबद्ध करने की तकनीकों को लागू करता है: उत्पाद सूची, लीडरबोर्ड, Event निर्धारण और खोज परिणामों की रैंकिंग।
आदिम सारणियों के लिए Arrays.sort
Arrays.sort() आदिम सारणियों के लिए दो-पिवट क्विकसॉर्ट का उपयोग करता है — औसतन बेहद तेज़, O(n log n)।
int[] scores = {45, 90, 78, 62, 88, 33};
Arrays.sort(scores);
System.out.println(Arrays.toString(scores)); // [33, 45, 62, 78, 88, 90]
// Sort a range only
int[] data = {9, 3, 7, 1, 5};
Arrays.sort(data, 1, 4); // sort indices 1-3 only
System.out.println(Arrays.toString(data)); // [9, 1, 3, 7, 5]वस्तु सारणियों के लिए Arrays.sort
वस्तु सारणियों के लिए Arrays.sort() TimSort का उपयोग करता है, जो स्थिर है। आप अपनी आवश्यकतानुसार क्रम के लिए तुलनाकर्ता दे सकते हैं।
String[] names = {"Charlie", "Alice", "Bob", "Diana"};
Arrays.sort(names);
System.out.println(Arrays.toString(names)); // [Alice, Bob, Charlie, Diana]
// Custom order: by length, then alphabetically
Arrays.sort(names, Comparator.comparingInt(String::length).thenComparing(Comparator.naturalOrder()));
System.out.println(Arrays.toString(names)); // [Bob, Alice, Diana, Charlie]Collections.sort और List.sort
दोनों List को उसी स्थान पर sort करते हैं। List.sort() आधुनिक और पसंदीदा तरीका है।
List<Integer> nums = new ArrayList<>(List.of(5, 2, 8, 1, 9, 3));
// Old way
Collections.sort(nums);
System.out.println(nums); // [1, 2, 3, 5, 8, 9]
// Modern way (same result)
nums.sort(Comparator.naturalOrder());
nums.sort(null); // null means natural order
// Descending
nums.sort(Comparator.reverseOrder());
System.out.println(nums); // [9, 8, 5, 3, 2, 1]कार्यात्मक शैली के लिए Stream.sorted()
प्रवाह-श्रृंखला बनाते समय stream().sorted() का उपयोग करें — यह स्रोत में बदलाव किए बिना एक नई क्रमबद्ध stream तैयार करता है।
List<String> cities = List.of("Tokyo", "London", "New York", "Paris", "Sydney");
// Sorted stream — source list unchanged
List<String> sorted = cities.stream()
.sorted(Comparator.comparingInt(String::length).thenComparing(Comparator.naturalOrder()))
.collect(Collectors.toList());
System.out.println(sorted);
// [Paris, Tokyo, London, Sydney, New York]मानचित्र को मान के अनुसार क्रमबद्ध करना
एक प्रसिद्ध साक्षात्कार प्रश्न: stream और तुलनाकर्ता का उपयोग करके Map को उसके मानों के अनुसार sort करें।
import java.util.*;
import java.util.stream.*;
Map<String, Integer> scores = Map.of(
"Alice", 95, "Bob", 87, "Charlie", 92, "Diana", 87
);
Map<String, Integer> sorted = scores.entrySet().stream()
.sorted(Map.Entry.<String, Integer>comparingByValue(Comparator.reverseOrder())
.thenComparing(Map.Entry.comparingByKey()))
.collect(Collectors.toLinkedHashMap(
Map.Entry::getKey, Map.Entry::getValue,
(v1, v2) -> v1, LinkedHashMap::new));
sorted.forEach((k, v) -> System.out.println(k + ": " + v));
// Alice: 95 / Charlie: 92 / Bob: 87 / Diana: 87स्थान-विशिष्ट क्रम के लिए Collator से क्रमबद्ध करना
भाषा-अनुसार स्ट्रिंग क्रमबद्ध करने के लिए String.compareTo के बजाय java.text.Collator का उपयोग करें — यह उच्चारण-चिह्नों, अक्षर-रूप और स्थान-विशिष्ट क्रम को संभालता है।
import java.text.*;
import java.util.*;
List<String> names = new ArrayList<>(List.of("éclair", "apple", "Über", "banana"));
Collator collator = Collator.getInstance(Locale.GERMAN);
names.sort(collator);
System.out.println(names); // locale-aware sortकई मानदंडों के आधार पर वस्तुओं को क्रमबद्ध करना
ई-कॉमर्स उत्पाद क्रम: स्टॉक में उपलब्ध पहले, फिर बिक्री कीमत के अनुसार, फिर रेटिंग और फिर नाम के अनुसार।
record Product(String name, double price, double salePrice, double rating, boolean inStock) {}
Comparator<Product> bestFirst = Comparator
.comparing(Product::inStock).reversed() // in-stock first
.thenComparingDouble(Product::salePrice) // cheapest sale price
.thenComparingDouble(Product::rating).reversed() // highest rated
.thenComparing(Product::name); // alphabetical tiebreakतारीख और समय के अनुसार Event क्रमबद्ध करना
Comparable लागू करने वाले java.time प्रकारों का उपयोग करके Event की समयानुक्रमिक समय-सारणी को क्रमबद्ध करना।
import java.time.*;
import java.util.*;
record Event(String title, LocalDate date, LocalTime time) {}
List<Event> schedule = new ArrayList<>(List.of(
new Event("Workshop", LocalDate.of(2024,7,15), LocalTime.of(9, 0)),
new Event("Keynote", LocalDate.of(2024,7,14), LocalTime.of(10, 30)),
new Event("Lunch Talk",LocalDate.of(2024,7,15), LocalTime.of(12, 0)),
new Event("Hackathon", LocalDate.of(2024,7,14), LocalTime.of(9, 0))
));
schedule.sort(Comparator.comparing(Event::date).thenComparing(Event::time));
schedule.forEach(e -> System.out.println(e.date() + " " + e.time() + " " + e.title()));क्रमबद्ध करके शीर्ष-N तत्व प्राप्त करना
शीर्ष-N तत्वों को कुशलतापूर्वक प्राप्त करें: घटते क्रम में sort करके पहले N तत्व लें, या बड़े डेटा-समुच्चयों के लिए PriorityQueue का उपयोग करें।
List<Integer> values = List.of(42, 17, 88, 5, 73, 56, 91, 33);
// Simple approach: sort descending, take first 3
List<Integer> top3 = values.stream()
.sorted(Comparator.reverseOrder())
.limit(3)
.collect(Collectors.toList());
System.out.println(top3); // [91, 88, 73]
// For very large datasets: PriorityQueue min-heap approach is O(n log k)
import java.util.PriorityQueue;
PriorityQueue<Integer> heap = new PriorityQueue<>(3);
for (int v : values) {
heap.offer(v);
if (heap.size() > 3) heap.poll();
}
System.out.println(new TreeSet<>(heap).descendingSet()); // [73, 88, 91]क्रमबद्ध करके डुप्लिकेट हटाना
क्रमबद्ध करने के बाद डुप्लिकेट तत्व पास-पास होते हैं — O(n) में उनकी पहचान संभव है।
int[] arr = {3, 1, 4, 1, 5, 9, 2, 6, 5};
Arrays.sort(arr); // sort first
// Remove duplicates in O(n) after sorting
int[] unique = Arrays.stream(arr).distinct().toArray();
System.out.println(Arrays.toString(unique)); // [1, 2, 3, 4, 5, 6, 9]प्रदर्शन: sort विधि चुनना
सही sort तरीका चुनना:
- आदिम सारणियाँ: Arrays.sort() — सबसे तेज़, उसी स्थान पर क्विकसॉर्ट
- Comparable वाली वस्तु सारणियाँ/सूचियाँ: Collections.sort() या List.sort(null)
- कई क्रम: thenComparing के साथ तुलनाकर्ता श्रृंखलाएँ
- बड़ी stream से शीर्ष-N: PriorityQueue या Stream.sorted().limit(N)
त्वरित जाँच
Arrays.sort() में Java वस्तु सारणियों के लिए कौन-सा क्रमबद्ध करने वाला एल्गोरिदम उपयोग करता है?
पुनरावलोकन: व्यवहार में सारणियों और संग्रहों को क्रमबद्ध करना
मुख्य बातें:
- आदिम प्रकारों के लिए Arrays.sort() दो-पिवट क्विकसॉर्ट का उपयोग करता है; वस्तुओं के लिए TimSort का
- List.sort() और Collections.sort() दोनों स्थिर TimSort हैं
- stream().sorted() स्रोत में बदलाव किए बिना एक नई क्रमबद्ध stream तैयार करता है
- मानचित्र को मान के अनुसार क्रमबद्ध करें: entrySet().stream().sorted(Map.Entry.comparingByValue())
- स्थान-अनुसार स्ट्रिंग क्रमबद्ध करने के लिए Collator का उपयोग करें
- बड़े डेटा से शीर्ष-N के लिए, k क्षमता वाला PriorityQueue पूरी सूची sort करने से अधिक कुशल है
एआई शिक्षक के साथ Java सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 104
- पाठ
- 374
अक्सर पूछे जाने वाले प्रश्न
क्या “Arrays और Collections की व्यावहारिक Sorting” पाठ निःशुल्क है?
हाँ—“Arrays और Collections की व्यावहारिक Sorting” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Java Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Arrays और Collections की व्यावहारिक Sorting” में मैं क्या सीखूँगा?
वास्तविक उदाहरणों से product lists, leaderboards और event schedules पर sorting लागू करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Java Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Java Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Java Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।
“Arrays और Collections की व्यावहारिक Sorting” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Java Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Java Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Comparable Interface
- Comparator और Lambda Sorting
- thenComparing से Multi-Key Sorting
- Arrays और Collections की व्यावहारिक Sorting