कई क्षेत्रों के साथ संग्रह


83

मेरे पास तीन फ़ील्ड्स (सभी स्ट्रिंग प्रकार) के साथ "रिपोर्ट" ऑब्जेक्ट्स की एक सूची है -

ReportKey
StudentNumber
School

मेरे पास एक तरह का कोड है-

Collections.sort(reportList, new Comparator<Report>() {

@Override
public int compare(final Report record1, final Report record2) {
      return (record1.getReportKey() + record1.getStudentNumber() + record1.getSchool())                      
        .compareTo(record2.getReportKey() + record2.getStudentNumber() + record2.getSchool());
      }

});

किसी कारण से, मेरे पास क्रमबद्ध क्रम नहीं है। एक ने खेतों के बीच में जगह बनाने की सलाह दी, लेकिन क्यों?

क्या आपको कोड में कुछ भी गलत है?


क्या वे निश्चित लंबाई वाले क्षेत्र हैं? क्या होता है अगर record1.getReportKey () "AB" है और record1.getStudentNumber () "CD" है, लेकिन record2.getReportKey () "ABCD" है?
मेलमोकब

तय लंबाई। क्षमा करना उल्लेख करना भूल गया।
मिल्ली सज़ाबो

जवाबों:


138

क्या आपको कोड में कुछ भी गलत है?

हाँ। आप उनकी तुलना करने से पहले तीन फ़ील्ड को एक साथ क्यों जोड़ रहे हैं?

मैं शायद ऐसा कुछ करूंगा: (यह मानकर कि आप उन्हें क्रमबद्ध करना चाहते हैं या नहीं)

@Override public int compare(final Report record1, final Report record2) {
    int c;
    c = record1.getReportKey().compareTo(record2.getReportKey());
    if (c == 0)
       c = record1.getStudentNumber().compareTo(record2.getStudentNumber());
    if (c == 0)
       c = record1.getSchool().compareTo(record2.getSchool());
    return c;
}

कृपया विस्तार से बताएं। फिर मैं कैसे करूँ? धन्यवाद।
१12

नमस्ते, आप अधिक जोड़ सकते हैं अगर (c == 0)? मुझे नहीं पता कि क्या सही है लेकिन ऐसा लगता है कि नहीं, क्योंकि अगर पहली शर्त पूरी की जाती है तो वह दूसरे या तीसरे नंबर पर नहीं

10
मुझे नहीं लगता कि तुम समझ गए a.compareTo(b); सम्मेलन यह है कि 0 का मान समानता का प्रतिनिधित्व करता है, नकारात्मक पूर्णांक उस का प्रतिनिधित्व करते हैं a < bऔर सकारात्मक पूर्णांक उस के a > bलिए Comparable aऔर का प्रतिनिधित्व करते हैं b
जेसन एस

1
यह काम नहीं कर रहा है। मैंने कोशिश की है कि यह काम नहीं कर रहा है। यह केवल एक के साथ काम करता हैcompareTo
शिमाताई

110

(मूल रूप से कई क्षेत्रों के आधार पर जावा में वस्तुओं की सूची को छाँटने के तरीके से )

इस जिस्ट में मूल कार्य कोड

जावा 8 लैम्ब्डा का उपयोग करना (10 अप्रैल 2019 को जोड़ा गया)

जावा 8 ने लैंबडा (गुवा और अपाचे कॉमन्स अभी भी अधिक लचीलेपन की पेशकश कर सकते हैं) द्वारा इसे अच्छी तरह से हल करता है:

Collections.sort(reportList, Comparator.comparing(Report::getReportKey)
            .thenComparing(Report::getStudentNumber)
            .thenComparing(Report::getSchool));

नीचे @ gaoagong के उत्तर के लिए धन्यवाद ।

ध्यान दें कि एक लाभ यह है कि गेटर्स का मूल्यांकन आलसी (जैसे। getSchool()केवल प्रासंगिक होने पर मूल्यांकन किया जाता है) किया जाता है।

गन्दा और दृढ़: हाथ से छँटाई

Collections.sort(pizzas, new Comparator<Pizza>() {  
    @Override  
    public int compare(Pizza p1, Pizza p2) {  
        int sizeCmp = p1.size.compareTo(p2.size);  
        if (sizeCmp != 0) {  
            return sizeCmp;  
        }  
        int nrOfToppingsCmp = p1.nrOfToppings.compareTo(p2.nrOfToppings);  
        if (nrOfToppingsCmp != 0) {  
            return nrOfToppingsCmp;  
        }  
        return p1.name.compareTo(p2.name);  
    }  
});  

इसके लिए बहुत अधिक टाइपिंग, रखरखाव की आवश्यकता होती है और यह त्रुटि प्रवण है। एकमात्र लाभ यह है कि प्रासंगिक होने पर ही गेटर्स मंगवाए जाते हैं।

चिंतनशील तरीका: बीनकॉमपरेटर के साथ छंटनी

ComparatorChain chain = new ComparatorChain(Arrays.asList(
   new BeanComparator("size"), 
   new BeanComparator("nrOfToppings"), 
   new BeanComparator("name")));

Collections.sort(pizzas, chain);  

स्पष्ट रूप से यह अधिक संक्षिप्त है, लेकिन इससे भी अधिक त्रुटि की संभावना है क्योंकि आप स्ट्रिंग्स का उपयोग करके फ़ील्ड के लिए अपना प्रत्यक्ष संदर्भ खो देते हैं (कोई भी प्रकार, ऑटो-रिफैक्टरिंग नहीं)। अब यदि किसी फ़ील्ड का नाम बदला गया है, तो कंपाइलर किसी समस्या की रिपोर्ट भी नहीं करेगा। इसके अलावा, क्योंकि यह समाधान प्रतिबिंब का उपयोग करता है, छंटाई बहुत धीमी है।

वहां पहुंचना: Google अमरूद की तुलना के साथ छंटनी

Collections.sort(pizzas, new Comparator<Pizza>() {  
    @Override  
    public int compare(Pizza p1, Pizza p2) {  
        return ComparisonChain.start().compare(p1.size, p2.size).compare(p1.nrOfToppings, p2.nrOfToppings).compare(p1.name, p2.name).result();  
        // or in case the fields can be null:  
        /* 
        return ComparisonChain.start() 
           .compare(p1.size, p2.size, Ordering.natural().nullsLast()) 
           .compare(p1.nrOfToppings, p2.nrOfToppings, Ordering.natural().nullsLast()) 
           .compare(p1.name, p2.name, Ordering.natural().nullsLast()) 
           .result(); 
        */  
    }  
});  

यह बहुत बेहतर है, लेकिन सबसे आम उपयोग के मामले के लिए कुछ बॉयलर प्लेट कोड की आवश्यकता होती है: डिफ़ॉल्ट रूप से अशक्त मान कम होना चाहिए। अशक्त क्षेत्रों के लिए, आपको अमरूद को एक अतिरिक्त निर्देश देना होगा कि उस मामले में क्या करना है। यह एक लचीला तंत्र है यदि आप कुछ विशिष्ट करना चाहते हैं, लेकिन अक्सर आप डिफ़ॉल्ट केस (यानी 1, ए, बी, जेड, नल) चाहते हैं।

और जैसा कि नीचे टिप्पणी में कहा गया है, इन गेटर्स का मूल्यांकन प्रत्येक तुलना के लिए तुरंत किया जाता है।

अपाचे कॉमन्स के साथ छाँटना तुलनात्मकता

Collections.sort(pizzas, new Comparator<Pizza>() {  
    @Override  
    public int compare(Pizza p1, Pizza p2) {  
        return new CompareToBuilder().append(p1.size, p2.size).append(p1.nrOfToppings, p2.nrOfToppings).append(p1.name, p2.name).toComparison();  
    }  
});  

अमरूद की तुलना की तरह, यह पुस्तकालय वर्ग कई क्षेत्रों में आसानी से हल करता है, लेकिन यह शून्य मानों के लिए डिफ़ॉल्ट व्यवहार को भी परिभाषित करता है (जैसे 1, ए, बी, जेड, नल)। हालाँकि, आप कुछ भी निर्दिष्ट नहीं कर सकते, जब तक कि आप अपने स्वयं के तुलनित्र प्रदान न करें।

फिर से, जैसा कि नीचे टिप्पणी में कहा गया है, इन गेटर्स का मूल्यांकन प्रत्येक तुलना के लिए तुरंत किया जाता है।

इस प्रकार

अंततः यह स्वाद और लचीलेपन की आवश्यकता के लिए नीचे आता है (अमरूद की तुलना) बनाम संक्षिप्त कोड (Apache's ComparToBuilder)।

बोनस विधि

मुझे एक अच्छा समाधान मिला जो कोडरव्यू पर प्राथमिकता में क्रम में कई तुलनित्रों को जोड़ता है MultiComparator:

class MultiComparator<T> implements Comparator<T> {
    private final List<Comparator<T>> comparators;

    public MultiComparator(List<Comparator<? super T>> comparators) {
        this.comparators = comparators;
    }

    public MultiComparator(Comparator<? super T>... comparators) {
        this(Arrays.asList(comparators));
    }

    public int compare(T o1, T o2) {
        for (Comparator<T> c : comparators) {
            int result = c.compare(o1, o2);
            if (result != 0) {
                return result;
            }
        }
        return 0;
    }

    public static <T> void sort(List<T> list, Comparator<? super T>... comparators) {
        Collections.sort(list, new MultiComparator<T>(comparators));
    }
}

फ़ोकस अपाचे कॉमन्स कलेक्शंस का उपयोग इसके लिए पहले से ही है:

ComparatorUtils.chainedComparator (comparatorCollection)

Collections.sort(list, ComparatorUtils.chainedComparator(comparators));

स्वच्छ कोड के लिए सही समाधान और उद्देश्य भी पूरा करता है
क्रिप्टोकरंसी

जावा 8 लैंबडा के साथ महान
फ्रैंक

महान जवाब के लिए धन्यवाद बेनी। मेरे पास एक परिदृश्य है जहां संपत्ति सीधे मेरी वस्तु के अंदर नहीं है। लेकिन एक नेस्टेड ऑब्जेक्ट है। मैं उस मामले में कैसे करूँ ?? उदाहरण के लिए, यहाँ में Collections.sort (ReportList, Comparator.comparing (रिपोर्ट :: getReKKey) .thenComparing (रिपोर्ट :: getStudentNumber) .thenComparing (रिपोर्ट ::School); रिपोर्ट ऑब्जेक्ट के अंदर मेरे पास एक छात्र ऑब्जेक्ट है और फिर छात्र ऑब्जेक्ट के अंदर मेरे पास एक छात्र संख्या है। हम उस मामले में यहाँ कैसे हल करते हैं? किसी भी सहायता की सराहना की जाएगी।
मधु रेड्डी

@MadhuReddy उदाहरण में विधि-संदर्भों को लैम्ब्डा के रूप में उपयोग किया जाता है, लेकिन आप केवल एक उचित लैम्ब्डा प्रदान कर सकते हैं जो इसके बदले उपयुक्त नेस्टेड फ़ील्ड लौटाता है।
बजे बेनी बोटेमा

44

मैं एक तुलनित्र का उपयोग कर चाहते हैं अमरूद की ComparisonChain:

public class ReportComparator implements Comparator<Report> {
  public int compare(Report r1, Report r2) {
    return ComparisonChain.start()
        .compare(r1.getReportKey(), r2.getReportKey())
        .compare(r1.getStudentNumber(), r2.getStudentNumber())
        .compare(r1.getSchool(), r2.getSchool())
        .result();
  }
}

20

यह एक पुराना प्रश्न है, इसलिए मुझे जावा 8 समकक्ष नहीं दिखता है। यहाँ इस विशिष्ट मामले के लिए एक उदाहरण है।

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/**
 * Compares multiple parts of the Report object.
 */
public class SimpleJava8ComparatorClass {

    public static void main(String[] args) {
        List<Report> reportList = new ArrayList<>();
        reportList.add(new Report("reportKey2", "studentNumber2", "school1"));
        reportList.add(new Report("reportKey4", "studentNumber4", "school6"));
        reportList.add(new Report("reportKey1", "studentNumber1", "school1"));
        reportList.add(new Report("reportKey3", "studentNumber2", "school4"));
        reportList.add(new Report("reportKey2", "studentNumber2", "school3"));

        System.out.println("pre-sorting");
        System.out.println(reportList);
        System.out.println();

        Collections.sort(reportList, Comparator.comparing(Report::getReportKey)
            .thenComparing(Report::getStudentNumber)
            .thenComparing(Report::getSchool));

        System.out.println("post-sorting");
        System.out.println(reportList);
    }

    private static class Report {

        private String reportKey;
        private String studentNumber;
        private String school;

        public Report(String reportKey, String studentNumber, String school) {
            this.reportKey = reportKey;
            this.studentNumber = studentNumber;
            this.school = school;
        }

        public String getReportKey() {
            return reportKey;
        }

        public void setReportKey(String reportKey) {
            this.reportKey = reportKey;
        }

        public String getStudentNumber() {
            return studentNumber;
        }

        public void setStudentNumber(String studentNumber) {
            this.studentNumber = studentNumber;
        }

        public String getSchool() {
            return school;
        }

        public void setSchool(String school) {
            this.school = school;
        }

        @Override
        public String toString() {
            return "Report{" +
                   "reportKey='" + reportKey + '\'' +
                   ", studentNumber='" + studentNumber + '\'' +
                   ", school='" + school + '\'' +
                   '}';
        }
    }
}

comparingऔर thenComparingजीत के लिए!
asgs

1
यह न्यूनतम एंड्रॉइड वर्जन 24 के लिए पूछता है।
वाइपर

14

यदि आप रिपोर्ट कुंजी, फिर छात्र संख्या, फिर स्कूल के आधार पर क्रमबद्ध करना चाहते हैं, तो आपको कुछ इस तरह करना चाहिए:

public class ReportComparator implements Comparator<Report>
{
    public int compare(Report r1, Report r2)
    {
        int result = r1.getReportKey().compareTo(r2.getReportKey());
        if (result != 0)
        {
            return result;
        }
        result = r1.getStudentNumber().compareTo(r2.getStudentNumber());
        if (result != 0)
        {
            return result;
        }
        return r1.getSchool().compareTo(r2.getSchool());
    }
}

यह मान लेता है कि कोई भी मूल्य शून्य नहीं हो सकता है, निश्चित रूप से - यह अधिक जटिल हो जाता है यदि आपको रिपोर्ट, रिपोर्ट कुंजी, छात्र संख्या या स्कूल के लिए शून्य मानों की अनुमति देने की आवश्यकता होती है।

जब आप रिक्त स्थान का उपयोग करने के लिए स्ट्रिंग समवर्ती संस्करण प्राप्त कर सकते हैं, तो यह अजीब मामलों में अभी भी विफल हो जाएगा यदि आपके पास विषम डेटा था जिसमें स्वयं स्थान शामिल थे आदि। उपरोक्त कोड वह तार्किक कोड है जो आप चाहते हैं ... पहले रिपोर्ट कुंजी से तुलना करें, फिर केवल छात्र संख्या के साथ परेशान अगर रिपोर्ट कुंजियाँ समान हैं, आदि।


6
हालांकि इस कोड के साथ "गलत" नहीं है और मैं इसे समझता हूं। मैं जेसन के कार्यान्वयन को पसंद करता हूं क्योंकि इसका पालन करना आसान लगता है क्योंकि उसके पास केवल एक रिटर्न स्टेटमेंट है।
jzd

जब मैं आपके कोड का उपयोग करने का प्रयास करता हूं, तो यह compareTo()विधि का उपयोग नहीं कर सकता है । क्या आप कृपया इस मुद्दे को सुलझाने में मेरी मदद कर सकते हैं।
सांप

@ वाइपर: ठीक है, क्योंकि मैं लागू नहीं कर Comparable<T>रहा हूं, मैं लागू कर रहा हूं Comparator<T>। हम नहीं जानते कि आप क्या हासिल करने की कोशिश कर रहे हैं, या आपने क्या कोशिश की है, या क्या गलत हुआ है। शायद आपको एक नया सवाल पूछना चाहिए, शायद अधिक शोध करने के बाद। (यह अच्छी तरह से पहले से ही पूछा जा सकता है।)
जॉन स्कीट

7

मैं जावा 8 लैम्ब्डा दृष्टिकोण का उपयोग करने का सुझाव देता हूं:

List<Report> reportList = new ArrayList<Report>();
reportList.sort(Comparator.comparing(Report::getRecord1).thenComparing(Report::getRecord2));

5

Java8 में कई क्षेत्रों के साथ छंटनी

package com.java8.chapter1;

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import static java.util.Comparator.*;



 public class Example1 {

    public static void main(String[] args) {
        List<Employee> empList = getEmpList();


        // Before Java 8 
        empList.sort(new Comparator<Employee>() {

            @Override
            public int compare(Employee o1, Employee o2) {
                int res = o1.getDesignation().compareTo(o2.getDesignation());
                if (res == 0) {
                    return o1.getSalary() > o2.getSalary() ? 1 : o1.getSalary() < o2.getSalary() ? -1 : 0;
                } else {
                    return res;
                }

            }
        });
        for (Employee emp : empList) {
            System.out.println(emp);
        }
        System.out.println("---------------------------------------------------------------------------");

        // In Java 8

        empList.sort(comparing(Employee::getDesignation).thenComparing(Employee::getSalary));
        empList.stream().forEach(System.out::println);

    }
    private static List<Employee> getEmpList() {
        return Arrays.asList(new Employee("Lakshman A", "Consultent", 450000),
                new Employee("Chaitra S", "Developer", 250000), new Employee("Manoj PVN", "Developer", 250000),
                new Employee("Ramesh R", "Developer", 280000), new Employee("Suresh S", "Developer", 270000),
                new Employee("Jaishree", "Opearations HR", 350000));
    }
}

class Employee {
    private String fullName;
    private String designation;
    private double salary;

    public Employee(String fullName, String designation, double salary) {
        super();
        this.fullName = fullName;
        this.designation = designation;
        this.salary = salary;
    }

    public String getFullName() {
        return fullName;
    }

    public String getDesignation() {
        return designation;
    }

    public double getSalary() {
        return salary;
    }

    @Override
    public String toString() {
        return "Employee [fullName=" + fullName + ", designation=" + designation + ", salary=" + salary + "]";
    }

}

empList.sort(comparing(Employee::getDesignation).thenComparing(Employee::getSalary));इस कोड ने मेरी मदद की। धन्यवाद
सुमित Badaya

यह न्यूनतम Android संस्करण 24 का उपयोग करने के लिए कहता है।
viper

4

यदि StudentNumber संख्यात्मक है, तो यह संख्यात्मक नहीं, बल्कि अल्फ़ान्यूमेरिक के अनुसार होगा। उम्मीद मत करो

"2" < "11"

यह:

"11" < "2"

यह वास्तविक प्रश्न का उत्तर देता है कि परिणाम गलत क्यों है।
फ्लोरियन एफ

3

यदि आप पहले ReportKey फिर छात्र संख्या फिर स्कूल के आधार पर क्रमबद्ध करना चाहते हैं, तो आपको उन्हें संक्षिप्त करने के बजाय प्रत्येक स्ट्रिंग की तुलना करने की आवश्यकता है। यदि आप रिक्त स्थान के साथ तार को पैड करते हैं तो आपकी विधि काम कर सकती है ताकि प्रत्येक ReportKey एक समान लंबाई और इतने पर हो, लेकिन यह वास्तव में प्रयास के लायक नहीं है। इसके बजाय सिर्फ ReportKeys की तुलना करने के लिए तुलना विधि को बदलें, यदि ComparTo 0 लौटाता है तो StudentNumber, फिर स्कूल का प्रयास करें।


3

ComparatorJDK1.8 में शुरू की गई विधियों के साथ इंटरफेस का उपयोग करें : comparingऔर thenComparing, या अधिक ठोस तरीके: comparingXXXऔर thenComparingXXX

उदाहरण के लिए, यदि हम पहले अपनी आईडी के आधार पर व्यक्तियों की सूची बनाना चाहते हैं, तो उम्र, फिर नाम:

            Comparator<Person> comparator = Comparator.comparingLong(Person::getId)
                    .thenComparingInt(Person::getAge)
                    .thenComparing(Person::getName);
            personList.sort(comparator);

0

यहां एक ऑब्जेक्ट में 2 फ़ील्ड्स की तुलना करते हुए एक पूर्ण उदाहरण दिया गया है, एक स्ट्रिंग और एक इंट, कोलर को सॉर्ट करने के लिए भी।

public class Test {

    public static void main(String[] args) {

        Collator myCollator;
        myCollator = Collator.getInstance(Locale.US);

        List<Item> items = new ArrayList<Item>();

        items.add(new Item("costrels", 1039737, ""));
        items.add(new Item("Costs", 1570019, ""));
        items.add(new Item("costs", 310831, ""));
        items.add(new Item("costs", 310832, ""));

        Collections.sort(items, new Comparator<Item>() {
            @Override
            public int compare(final Item record1, final Item record2) {
                int c;
                //c = record1.item1.compareTo(record2.item1); //optional comparison without Collator                
                c = myCollator.compare(record1.item1, record2.item1);
                if (c == 0) 
                {
                    return record1.item2 < record2.item2 ? -1
                            :  record1.item2 > record2.item2 ? 1
                            : 0;
                }
                return c;
            }
        });     

        for (Item item : items)
        {
            System.out.println(item.item1);
            System.out.println(item.item2);
        }       

    }

    public static class Item
    {
        public String item1;
        public int item2;
        public String item3;

        public Item(String item1, int item2, String item3)
        {
            this.item1 = item1;
            this.item2 = item2;
            this.item3 = item3;
        }       
    }

}

आउटपुट:

costrels 1039737

लागत 310831

लागत 310832

लागत 1570019


0

उपरोक्त बहुत सारे उत्तरों में एकल तुलनित्र विधि की तुलना में क्षेत्र हैं जो वास्तव में काम नहीं कर रहे हैं। हालांकि प्रत्येक क्षेत्र के लिए लागू किए गए अलग-अलग तुलनित्रों के साथ कुछ उत्तर हैं, मैं इसे पोस्ट कर रहा हूं क्योंकि यह उदाहरण मुझे समझने में अधिक स्पष्ट और सरल होगा।

class Student{
    Integer bornYear;
    Integer bornMonth;
    Integer bornDay;
    public Student(int bornYear, int bornMonth, int bornDay) {

        this.bornYear = bornYear;
        this.bornMonth = bornMonth;
        this.bornDay = bornDay;
    }
    public Student(int bornYear, int bornMonth) {

        this.bornYear = bornYear;
        this.bornMonth = bornMonth;

    }
    public Student(int bornYear) {

        this.bornYear = bornYear;

    }
    public Integer getBornYear() {
        return bornYear;
    }
    public void setBornYear(int bornYear) {
        this.bornYear = bornYear;
    }
    public Integer getBornMonth() {
        return bornMonth;
    }
    public void setBornMonth(int bornMonth) {
        this.bornMonth = bornMonth;
    }
    public Integer getBornDay() {
        return bornDay;
    }
    public void setBornDay(int bornDay) {
        this.bornDay = bornDay;
    }
    @Override
    public String toString() {
        return "Student [bornYear=" + bornYear + ", bornMonth=" + bornMonth + ", bornDay=" + bornDay + "]";
    }


}
class TestClass
{       

    // Comparator problem in JAVA for sorting objects based on multiple fields 
    public static void main(String[] args)
    {
        int N,c;// Number of threads

        Student s1=new Student(2018,12);
        Student s2=new Student(2018,12);
        Student s3=new Student(2018,11);
        Student s4=new Student(2017,6);
        Student s5=new Student(2017,4);
        Student s6=new Student(2016,8);
        Student s7=new Student(2018);
        Student s8=new Student(2017,8);
        Student s9=new Student(2017,2);
        Student s10=new Student(2017,9);

        List<Student> studentList=new ArrayList<>();
        studentList.add(s1);
        studentList.add(s2);
        studentList.add(s3);
        studentList.add(s4);
        studentList.add(s5);
        studentList.add(s6);
        studentList.add(s7);
        studentList.add(s8);
        studentList.add(s9);
        studentList.add(s10);

        Comparator<Student> byMonth=new Comparator<Student>() {
            @Override
            public int compare(Student st1,Student st2) {
                if(st1.getBornMonth()!=null && st2.getBornMonth()!=null) {
                    return st2.getBornMonth()-st1.getBornMonth();
                }
                else if(st1.getBornMonth()!=null) {
                    return 1;
                }
                else {
                    return -1;
                }
        }};

        Collections.sort(studentList, new Comparator<Student>() {
            @Override
            public int compare(Student st1,Student st2) {
                return st2.getBornYear()-st1.getBornYear();
        }}.thenComparing(byMonth));

        System.out.println("The sorted students list in descending is"+Arrays.deepToString(studentList.toArray()));



    }

}

आउटपुट

उतरने में क्रमबद्ध छात्रों की सूची है [छात्र [जन्म_ वर्ष = २०१M, जन्ममूर्ति = अशक्त, जन्मदिवस = अशक्त], विद्यार्थी [जन्मजात २०१ in, जन्मात्रा = १२, जन्मदिवस = अशक्त], विद्यार्थी [जन्मजय = २०१ in, जन्मतिथि = १२, जन्मदिवस null], छात्र [जन्म = २०१], जन्माष्टमी = ११, जन्मदिवस = अशक्त], विद्यार्थी [जन्मशाही = २०१ [, जन्ममूर्ति = ९, जन्मदिवस = अशक्त], विद्यार्थी [जन्मदिवस = २०१ [, जन्म मास =,, जन्मदिवस = अशक्त], विद्यार्थी [छात्र] bornYear = 2017, bornMonth = 6, bornDay = null], विद्यार्थी [bornYear = 2017, bornMonth = 4, bornDay = null], विद्यार्थी [bornYear = 2017, bornMonth = 2, bornDay = null], विद्यार्थी [bornYear = 2016, bornMonth = 8, जन्म दिन = अशक्त]

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.