दिलचस्प पोस्ट
समाधान करने के लिए वेबपैक के साथ पथ की आवश्यकता है ट्रिगर ऑनमोसोवर ईवेंट प्रोग्रामेटिक रूप से जावास्क्रिप्ट में कैसे सी # से कंप्यूटर को बंद करने के लिए क्यों पेंट () / पेंट कॉम्पोनेंट () कभी नहीं बुलाया गया है? क्या इसे टीपीएल टास्क ऑब्जेक्ट पर विस्थापन () कॉल नहीं करने के लिए स्वीकार्य माना जाता है? LINQ-to-SQL बनाम संग्रहीत कार्यविधियाँ? Linq के साथ IQueryable का उपयोग करना विंडोज सर्विस जीयूआई एप्लीकेशन को कैसे कार्यान्वित कर सकती है? UIImageWriteToSavedPhotosAlbum गलत आकार और गुणवत्ता के लिए बचाता है सी # टेलनेट लाइब्रेरी JQuery का उपयोग करने वाले तत्वों में आप छद्म वर्ग कैसे जोड़ सकते हैं? कैसे दो HTML पृष्ठों के बीच चर का आदान प्रदान करने के लिए? इस गतिविधि में पहले से ही विंडो सजावट द्वारा एक एक्शन बार दिया गया है निजी और संरक्षित सदस्य: सी ++ इंटेलिजेंस से सार्वजनिक विधियों को छिपाने के तरीके

जावा में वस्तुओं की एक सरणी को सॉर्ट करने के लिए कैसे?

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

public String toString() { return (name + "\n" + id + "\n" + author + "\n" + publisher + "\n"); } 

अब मुझे नाम की वस्तुओं के उस सरणी को व्यवस्थित करने की ज़रूरत है मुझे पता है कि कैसे सॉर्ट करना है, लेकिन मुझे पता नहीं है कि ऑब्जेक्ट से नाम कैसे निकाले और उन्हें सॉर्ट करें।

Solutions Collecting From Web of "जावा में वस्तुओं की एक सरणी को सॉर्ट करने के लिए कैसे?"

आपके पास ऐसा करने के दो तरीके हैं, दोनों एरे उपयोगिता वर्ग का उपयोग करते हैं

  1. एक कंपैटर को लागू करें और तुलनित्र के साथ सॉर्ट विधि को अपने सरणी को पास करें जो इसे दूसरे पैरामीटर के रूप में लेते हैं।
  2. अपने ऑब्जेक्ट से वर्ग में तुलनात्मक अंतरफलक लागू करें और अपनी सरणी को सॉर्ट पद्धति में पास करें जो केवल एक पैरामीटर लेता है।

उदाहरण

 class Book implements Comparable<Book> { public String name, id, author, publisher; public Book(String name, String id, String author, String publisher) { this.name = name; this.id = id; this.author = author; this.publisher = publisher; } public String toString() { return ("(" + name + ", " + id + ", " + author + ", " + publisher + ")"); } @Override public int compareTo(Book o) { // usually toString should not be used, // instead one of the attributes or more in a comparator chain return toString().compareTo(o.toString()); } } @Test public void sortBooks() { Book[] books = { new Book("foo", "1", "author1", "pub1"), new Book("bar", "2", "author2", "pub2") }; // 1. sort using Comparable Arrays.sort(books); System.out.println(Arrays.asList(books)); // 2. sort using comparator: sort by id Arrays.sort(books, new Comparator<Book>() { @Override public int compare(Book o1, Book o2) { return o1.id.compareTo(o2.id); } }); System.out.println(Arrays.asList(books)); } 

उत्पादन

 [(bar, 2, author2, pub2), (foo, 1, author1, pub1)] [(foo, 1, author1, pub1), (bar, 2, author2, pub2)] 

आप इस तरह से कुछ कोशिश कर सकते हैं:

 List<Book> books = new ArrayList<Book>(); Collections.sort(books, new Comparator<Book>(){ public int compare(Book o1, Book o2) { return o1.name.compareTo(o2.name); } }); 

जावा 8


लैम्ब्डा भाव का उपयोग करना

 Arrays.sort(myTypes, (a,b) -> a.name.compareTo(b.name)); 

Test.java

 public class Test { public static void main(String[] args) { MyType[] myTypes = { new MyType("John", 2, "author1", "publisher1"), new MyType("Marry", 298, "author2", "publisher2"), new MyType("David", 3, "author3", "publisher3"), }; System.out.println("--- before"); System.out.println(Arrays.asList(myTypes)); Arrays.sort(myTypes, (a, b) -> a.name.compareTo(b.name)); System.out.println("--- after"); System.out.println(Arrays.asList(myTypes)); } } 

MyType.java

 public class MyType { public String name; public int id; public String author; public String publisher; public MyType(String name, int id, String author, String publisher) { this.name = name; this.id = id; this.author = author; this.publisher = publisher; } @Override public String toString() { return "MyType{" + "name=" + name + '\'' + ", id=" + id + ", author='" + author + '\'' + ", publisher='" + publisher + '\'' + '}' + System.getProperty("line.separator"); } } 

आउटपुट:

 --- before [MyType{name=John', id=2, author='author1', publisher='publisher1'} , MyType{name=Marry', id=298, author='author2', publisher='publisher2'} , MyType{name=David', id=3, author='author3', publisher='publisher3'} ] --- after [MyType{name=David', id=3, author='author3', publisher='publisher3'} , MyType{name=John', id=2, author='author1', publisher='publisher1'} , MyType{name=Marry', id=298, author='author2', publisher='publisher2'} ] 

विधि संदर्भ का उपयोग करना

 Arrays.sort(myTypes, MyType::compareThem); 

जहां compareThem MyType.java में जोड़ा जाना चाहिए:

 public static int compareThem(MyType a, MyType b) { return a.name.compareTo(b.name); }