दिलचस्प पोस्ट
आर में एच 2 ए मॉडल के लिए "सुंदर" टैब प्रिंट करें एक मान में परिभाषित वस्तुओं की कुल संख्या JQuery का उपयोग करते हुए JSON सरणी से अद्वितीय परिणाम प्राप्त करें कैसे पता कैसे ऑब्जेक्ट संपत्ति संपत्ति नाम धारण चर के साथ मौजूद है? क्लोजर में संदर्भित स्थानीय चर कैसे हैं? विंडो चौड़ाई और डीआईसीओएम छवि की केंद्र गणना कैसे मैट्रिक्स के बराबर (यह, …) vtbl clobbering बिना करने के लिए? पैरामीटर की गई क्वेरी में गैर-पैरामीटर वाले क्वेरी से बेहद धीमी क्वेरी योजना क्यों उत्पन्न होती है एक विरासत कक्षा में फ़ंक्शन ओवरलोडिंग के साथ सी + + मुद्दा इकाई फ़्रेमवर्क प्रसंग लाइफटाइम के बारे में सवाल एक्सकोड 6 IB_DESIGNABLE- इंटरफ़ेस बिल्डर में बंडल से संसाधन लोड नहीं करना सी में एकल वर्ण के लिए scanf कैसे करें एएसपी.NET पहचान में दावे को कैसे अद्यतन किया जाए? एपके टू टॉमकैट: mod_jk vs mod_proxy स्टाइल मानचित्र आइकन और लेबल पर ईवेंट श्रोता पर क्लिक करें

जावा संग्रह सॉर्ट करें

मेरे पास एक जावा संग्रह है:

Collection<CustomObject> list = new ArrayList<CustomObject>(); 

CustomObject पास एक id फ़ील्ड है जो अब प्रदर्शन सूची से पहले मैं उस id इस संग्रह से सॉर्ट करना चाहता हूं।

क्या कोई ऐसा तरीका है जो मैं कर सकता हूं?

Solutions Collecting From Web of "जावा संग्रह सॉर्ट करें"

तुलनात्मक प्रयोग करें:

 List<CustomObject> list = new ArrayList<CustomObject>(); Comparator<CustomObject> comparator = new Comparator<CustomObject>() { @Override public int compare(CustomObject left, CustomObject right) { return left.getId() - right.getId(); // use your logic } }; Collections.sort(list, comparator); // use the comparator as much as u want System.out.println(list); 

इसके अतिरिक्त, यदि CustomObject को Comparable कार्यान्वित किया जाता है, तो बस Collections.sort(list) CustomObject Collections.sort(list) उपयोग करें

जेडीके 8 के साथ वाक्यविन्यास बहुत आसान है।

 List<CustomObject> list = getCustomObjectList(); Collections.sort(list, (left, right) -> left.getId() - right.getId()); System.out.println(list); 

बहुत सरल

 List<CustomObject> list = getCustomObjectList(); list.sort((left, right) -> left.getId() - right.getId()); System.out.println(list); 

सरल

 List<CustomObject> list = getCustomObjectList(); list.sort(Comparator.comparing(CustomObject::getId)); System.out.println(list); 

जाहिर है प्रारंभिक कोड भी जेडीके 8 के लिए इस्तेमाल किया जा सकता है।

सवाल यह है: "कलेक्ट कलेक्शन" तो आप Collections.sort(List<T> l, Comparator<? super T> comparator) उपयोग नहीं कर सकते। Collections.sort(List<T> l, Comparator<? super T> comparator)

कुछ सुझाव:

संग्रह प्रकार के लिए:

 Comparator<String> defaultComparator = new Comparator<String>() { @Override public int compare(String o1, String o2) { return o1.compareTo(o2); } }; Collection<String> collection = getSomeStringCollection(); String[] strings = collection.toArray(new String[collection.size()]); Arrays.sort(strings, defaultComparator); List<String> sortedStrings = Arrays.asList(strings); Collection<String> collection = getSomeStringCollection(); List<String> list = new ArrayList(collection); Collections.sort(list, defaultComparator); collection = list; // if you wish 

सूची प्रकार के लिए:

 List<String> list = getSomeStringList(); Collections.sort(list, defaultComparator); 

सेट प्रकार के लिए:

 Set<String> set = getSomeStringSet(); // Than steps like in 'For Collection type' section or use java.util.TreeSet // TreeSet sample: // Sorted using java.lang.Comparable. Set<String> naturalSorted = new TreeSet(set); Set<String> set = getSomeStringSet(); Set<String> sortedSet = new TreeSet(defaultComparator); sortedSet.addAll(set); 

जावा 8 संस्करण वहाँ java.util.List#sort(Comparator<? super E> c) विधि है

 List<String> list = getSomeStringList(); list.sort(defaultComparator); 

या

 List<String> list = getSomeStringList(); list.sort((String o1, String o2) -> o1.compareTo(o2)); 

या प्रकार के लिए लागू करता है कि तुलनात्मक:

 List<String> list = getSomeStringList(); list.sort(String::compareTo); 

एक थोड़ा अलग उदाहरण कहता है कि आपके पास एक ऐसा वर्ग है जो तुलनात्मक रूप से लागू नहीं करता है, लेकिन फिर भी आप इसे किसी फ़ील्ड या विधि पर सॉर्ट करना चाहते हैं

 Collections.sort(allMatching, new Comparator<ClassOne>() { @Override public int compare(final ClassOne o1, final ClassOne o2) { if (o1.getMethodToSort() > o2.getMethodToSort()) { return 1; } else if (o1.getMethodToSort() < o2.getMethodToSort()) { return -1; } return 0; } }); 

अपने कस्टमऑब्जेक्ट पर तुलनात्मक इंटरफेस लागू करें

आप Comparator इंटरफ़ेस को लागू करना चाहिए

उदाहरण:

 public class CustomComparator implements Comparator<CustomObject> { @Override public int compare(CustomObject o1, CustomObject o2) { return o1.getId().compareTo(o2.getId()); } } 

उसके बाद आप कलेक्शंस क्लासेस Collections.sort() विधि का उपयोग कर सकते हैं:

 Collections.sort(list, new CustomComparator()); 

Comparator तरीका है

और देखें

  • छँटाई-ArrayList के

जावा 8 के रूप में अब आप लैम्ब्डा के उपयोग से एक स्ट्रीम के साथ ऐसा कर सकते हैं:

 list.stream().sorted(Comparator.comparing(customObject::getId)) .foreach(object -> System.out.println(object)); 

सॉर्ट का उपयोग करें

आपको यह करना है:

सूची में सभी तत्वों को तुलनात्मक अंतरफलक लागू करना होगा।

(या इसे नीचे दिए गए संस्करण का उपयोग करें, जैसा कि पहले ही कहा गया है।)

बहुत सारे सही उत्तर हैं, लेकिन मुझे यह नहीं मिला है: संकलन को हल नहीं किया जा सकता, आप केवल उनके द्वारा पुनरावृति कर सकते हैं।

अब आप उन पर पुनरावृति कर सकते हैं और एक नया सॉर्ट किया जा सकता something इसके लिए यहां उत्तरों का पालन करें

आप सॉर्टिंग के प्रयोजन के लिए जावा कस्टम क्लास का उपयोग कर सकते हैं।

जावा 8 के साथ आपके पास कई विकल्प हैं, जो विधि संदर्भों और अंतर्निर्मित comparing तुलनित्र के संयोजन में हैं:

 import static java.util.Comparator.comparing; Collection<CustomObject> list = new ArrayList<CustomObject>(); Collections.sort(list, comparing(CustomObject::getId)); //or list.sort(comparing(CustomObject::getId)); 

सॉर्ट किया गयासेट और तुलनित्र संयोजक को आईडी क्षेत्र का सम्मान करना चाहिए।

आप भी उपयोग कर सकते हैं:

 Collections.sort(list, new Comparator<CustomObject>() { public int compare(CustomObject obj1, CustomObject obj2) { return obj1.id - obj2.id; } }); System.out.println(list);