दिलचस्प पोस्ट
TensorFlow: अगले बैच के लिए एलएसटीएम स्थिति याद रखें (राज्यपूर्ण एलएसटीएम) ब्राउज़र मेमोरी उपयोग तुलना: इनलाइन ऑनक्लिक बनाम। JQuery का उपयोग कर .बिंड () कब एक अभियुक्त का उपयोग करें और अपवाद का उपयोग कब करें जेपीए / जेटीए / @ ट्रान्सैसिकल स्प्रिंग एनोटेशन क्यों लवणों को हमलों 'असंभव' बनाते हैं? जावा में एक यादृच्छिक BigInteger मान कैसे उत्पन्न करें? सेवा परत और नियंत्रक: कौन देखभाल करता है? CSS बनाम तत्व विशेषताओं के माध्यम से HTML5 कैनवास का आकार स्ट्रिंग, स्ट्रिंगबफर, और स्ट्रिंगबइल्डर मैट्रिक्स की पंक्तियों को सॉर्ट करने के लिए जोर कैसे उपयोग करें? प्रविष्टि स्टेटमेंट के लिए पोस्टग्रेज़ में यूयूआईडी उत्पन्न करना? एंड्रॉइड कैनवास डाव टेक्स्ट अधूरे आप दो जीआईटी भंडारों को कैसे मर्ज करते हैं? टैग प्रणाली कैसे लागू करें

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

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

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

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

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

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

  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); }