दिलचस्प पोस्ट
MySQL में बाइट्स में इंट (11) के कॉलम का आकार क्या है? संस्करण नियंत्रण में परियोजनाओं की संरचना साइलेंट आईओएस 11 पर ऐप को डिलीवर नहीं किया गया jQuery: .click () और .on ("क्लिक करें") के बीच अंतर। उबंटू में नोड पैकेज मैनेजर के जरिए पैकेज स्थापित नहीं किया जा सकता AsyncTask धागे कभी मर नहीं मुझे अपने यूआरएल में पिछली स्लैश का उपयोग कब करना चाहिए? कैशिंग आवश्यक स्क्रिप्ट्स से RequireJS को रोकें 600851475143 में से सबसे बड़ी संख्या खोजना? HTML वर्ण कोड 8203 क्या है? लोड और स्क्रिप्ट का आदेश निष्पादित रीसाइक्लर हेडर और पाद लेख देखें पायथन में एक उदाहरण का वर्ग नाम प्राप्त करना क्या एक टीसीपी सॉकेट कनेक्शन में "जीवित रहना" है? 1 9 70 से पहले तारीखों के लिए स्ट्रॉटोम का उपयोग करना

एक विशेषता द्वारा ऑब्जेक्ट की एक सूची समूह: जावा

मुझे ऑब्जेक्ट (छात्र) की एक विशेष वस्तु का एक विशेषता (स्थान) का उपयोग करने की आवश्यकता है, कोड नीचे जैसा है,

public class Grouping { /** * @param args the command line arguments */ public static void main(String[] args) { List<Student> studlist = new ArrayList<Student>(); studlist.add(new Student("1726", "John", "New York")); studlist.add(new Student("4321", "Max", "California")); studlist.add(new Student("2234", "Andrew", "Los Angeles")); studlist.add(new Student("5223", "Michael", "New York")); studlist.add(new Student("7765", "Sam", "California")); studlist.add(new Student("3442", "Mark", "New York")); //Code to group students by location /* Output should be Like below ID : 1726 Name : John Location : New York ID : 5223 Name : Michael Location : New York ID : 4321 Name : Max Location : California ID : 7765 Name : Sam Location : California */ for (Student student : studlist) { System.out.println("ID : "+student.stud_id+"\t"+"Name : "+student.stud_name+"\t"+"Location : "+student.stud_location); } } } class Student { String stud_id; String stud_name; String stud_location; Student(String sid, String sname, String slocation) { this.stud_id = sid; this.stud_name = sname; this.stud_location = slocation; } } 

कृपया मुझे यह करने का एक साफ तरीका सुझाएं।

वेब के समाधान से एकत्रित समाधान "एक विशेषता द्वारा ऑब्जेक्ट की एक सूची समूह: जावा"

यह विद्यार्थियों को locationID HashMap के रूप में कुंजी के साथ HashMap ऑब्जेक्ट जोड़ देगा।

 HashMap<Integer, List<Location>> hashMap = new HashMap<Integer, List<Location>>(); 

इस कोड को बदल दें और HashMap छात्रों को जोड़ें:

 if (!hashMap.containsKey(locationId)) { List<Location> list = new ArrayList<Location>(); list.add(student); hashMap.put(locationId, list); } else { hashMap.get(locationId).add(student); } 

यदि आप विशेष स्थान के विवरण वाले सभी छात्र चाहते हैं तो आप इसका उपयोग कर सकते हैं:

 hashMap.get(locationId); 

जो आपको सभी छात्रों को उसी स्थान आईडी के साथ मिल जाएगा।

जावा 8 में:

 Map<String, List<Student>> studlistGrouped = studlist.stream().collect(Collectors.groupingBy(w -> w.stud_location)); 
 Map<String, List<Student>> map = new HashMap<String, List<Student>>(); for (Student student : studlist) { String key = student.stud_location; if(map.containsKey(key)){ List<Student> list = map.get(key); list.add(student); }else{ List<Student> list = new ArrayList<Student>(); list.add(student); map.put(key, list); } } 

तुलनात्मक रूप से जावा में फ़ीचर द्वारा SQL ग्रुप को लागू करें, तुलनित्र आपके कॉलम डेटा की तुलना करेगा, और उसे सॉर्ट करेगा। असल में यदि आप सॉर्ट किए गए डेटा रखते हैं जो समूहीकृत डेटा के रूप में दिखता है, उदाहरण के लिए यदि आपके पास एक ही दोहराए गए कॉलम डेटा हैं तो सॉर्ट मेकेनिज्म को एक ही डेटा एक तरफ रखते हुए सॉर्ट करें और फिर दूसरे डेटा को देखें जो कि भिन्न डेटा है। यह अप्रत्यक्ष रूप से एक ही डेटा के ग्रुपिंग के रूप में देखा गया।

 public class GroupByFeatureInJava { public static void main(String[] args) { ProductBean p1 = new ProductBean("P1", 20, new Date()); ProductBean p2 = new ProductBean("P1", 30, new Date()); ProductBean p3 = new ProductBean("P2", 20, new Date()); ProductBean p4 = new ProductBean("P1", 20, new Date()); ProductBean p5 = new ProductBean("P3", 60, new Date()); ProductBean p6 = new ProductBean("P1", 20, new Date()); List<ProductBean> list = new ArrayList<ProductBean>(); list.add(p1); list.add(p2); list.add(p3); list.add(p4); list.add(p5); list.add(p6); for (Iterator iterator = list.iterator(); iterator.hasNext();) { ProductBean bean = (ProductBean) iterator.next(); System.out.println(bean); } System.out.println("******** AFTER GROUP BY PRODUCT_ID ******"); Collections.sort(list, new ProductBean().new CompareByProductID()); for (Iterator iterator = list.iterator(); iterator.hasNext();) { ProductBean bean = (ProductBean) iterator.next(); System.out.println(bean); } System.out.println("******** AFTER GROUP BY PRICE ******"); Collections.sort(list, new ProductBean().new CompareByProductPrice()); for (Iterator iterator = list.iterator(); iterator.hasNext();) { ProductBean bean = (ProductBean) iterator.next(); System.out.println(bean); } } } class ProductBean { String productId; int price; Date date; @Override public String toString() { return "ProductBean [" + productId + " " + price + " " + date + "]"; } ProductBean() { } ProductBean(String productId, int price, Date date) { this.productId = productId; this.price = price; this.date = date; } class CompareByProductID implements Comparator<ProductBean> { public int compare(ProductBean p1, ProductBean p2) { if (p1.productId.compareTo(p2.productId) > 0) { return 1; } if (p1.productId.compareTo(p2.productId) < 0) { return -1; } // at this point all ab,c,d are equal... so return "equal" return 0; } @Override public boolean equals(Object obj) { // TODO Auto-generated method stub return super.equals(obj); } } class CompareByProductPrice implements Comparator<ProductBean> { @Override public int compare(ProductBean p1, ProductBean p2) { // this mean the first column is tied in thee two rows if (p1.price > p2.price) { return 1; } if (p1.price < p2.price) { return -1; } return 0; } public boolean equals(Object obj) { // TODO Auto-generated method stub return super.equals(obj); } } class CompareByCreateDate implements Comparator<ProductBean> { @Override public int compare(ProductBean p1, ProductBean p2) { if (p1.date.after(p2.date)) { return 1; } if (p1.date.before(p2.date)) { return -1; } return 0; } @Override public boolean equals(Object obj) { // TODO Auto-generated method stub return super.equals(obj); } } } 

उपरोक्त ProductBean सूची के लिए यहां मापदंड द्वारा ग्रुप किया गया है, यहां यदि आप इनपुट डेटा को देखते हैं जो कलेक्शन के लिए ProductBean की सूची दी जाती है। स्रोत (सूची, आपके आवश्यक स्तंभ के लिए तुलनात्मक वस्तु) यह आपकी तुलनित्र कार्यान्वयन के आधार पर सॉर्ट करेगा और आप नीचे की आउटपुट में ग्रुप डेटा देखने में सक्षम होंगे। उम्मीद है की यह मदद करेगा…

     ******** ग्रुपिंग इन्पोट डेटा से पहले इस तरह से दिखता है ******
     उत्पादबीन [पी 1 20 सोम 9 नवंबर 09:31:01 IST]
     उत्पादबीन [पी 1 30 सोम 9 नवंबर 09:31:01 IST]
     उत्पादबीन [पी 2 20 सोम 9 नवंबर 09:31:01 IST]
     उत्पादबीन [पी 1 20 सोम 9 नवंबर 09:31:01 IST]
     उत्पादबीन [पी 3 60 सोम 9 नवंबर 09:31:01 IST]
     उत्पादबीन [पी 1 20 सोम 9 नवंबर 09:31:01 IST]
     ******** PRODUCT_ID द्वारा ग्रुप के बाद ******
     उत्पादबीन [पी 1 20 सोम 9 नवंबर 09:31:01 IST]
     उत्पादबीन [पी 1 30 सोम 9 नवंबर 09:31:01 IST]
     उत्पादबीन [पी 1 20 सोम 9 नवंबर 09:31:01 IST]
     उत्पादबीन [पी 1 20 सोम 9 नवंबर 09:31:01 IST]
     उत्पादबीन [पी 2 20 सोम 9 नवंबर 09:31:01 IST]
     उत्पादबीन [पी 3 60 सोम 9 नवंबर 09:31:01 IST]

     ******** ग्रुप द्वारा मूल्य के बाद *******
     उत्पादबीन [पी 1 20 सोम 9 नवंबर 09:31:01 IST]
     उत्पादबीन [पी 1 20 सोम 9 नवंबर 09:31:01 IST]
     उत्पादबीन [पी 2 20 सोम 9 नवंबर 09:31:01 IST]
     उत्पादबीन [पी 1 20 सोम 9 नवंबर 09:31:01 IST]
     उत्पादबीन [पी 1 30 सोम 9 नवंबर 09:31:01 IST]
     उत्पादबीन [पी 3 60 सोम 9 नवंबर 09:31:01 IST]

आप निम्न का उपयोग कर सकते हैं:

 Map<String, List<Student>> groupedStudents = new HashMap<String, List<Student>>(); for (Student student: studlist) { String key = student.stud_location; if (groupedStudents.get(key) == null) { groupedStudents.put(key, new ArrayList<Student>()); } groupedStudents.get(key).add(student); } 

// प्रिंट

 Set<String> groupedStudentsKeySet = groupedCustomer.keySet(); for (String location: groupedStudentsKeySet) { List<Student> stdnts = groupedStudents.get(location); for (Student student : stdnts) { System.out.println("ID : "+student.stud_id+"\t"+"Name : "+student.stud_name+"\t"+"Location : "+student.stud_location); } } 

जावा 8 का उपयोग करना

 import java.util.List; import java.util.Map; import java.util.stream.Collectors; import java.util.stream.Stream; class Student { String stud_id; String stud_name; String stud_location; public String getStud_id() { return stud_id; } public String getStud_name() { return stud_name; } public String getStud_location() { return stud_location; } Student(String sid, String sname, String slocation) { this.stud_id = sid; this.stud_name = sname; this.stud_location = slocation; } } class Temp { public static void main(String args[]) { Stream<Student> studs = Stream.of(new Student("1726", "John", "New York"), new Student("4321", "Max", "California"), new Student("2234", "Max", "Los Angeles"), new Student("7765", "Sam", "California")); Map<String, Map<Object, List<Student>>> map= studs.collect(Collectors.groupingBy(Student::getStud_name,Collectors.groupingBy(Student::getStud_location))); System.out.println(map);//print by name and then location } } 

नतीजा होगा:

 { Max={ Los Angeles=[Student@214c265e], California=[Student@448139f0] }, John={ New York=[Student@7cca494b] }, Sam={ California=[Student@7ba4f24f] } } 

आप इस तरह से सॉर्ट कर सकते हैं:

  Collections.sort(studlist, new Comparator<Student>() { @Override public int compare(Student o1, Student o2) { return o1.getStud_location().compareTo(o2.getStud_location()); } }); 

यह मानते हुए कि आपके छात्र वर्ग के स्थान पर पहुंचने वाला भी आपके पास है।

आप यह कर सकते हैं:

 Map<String, List<Student>> map = new HashMap<String, List<Student>>(); List<Student> studlist = new ArrayList<Student>(); studlist.add(new Student("1726", "John", "New York")); map.put("New York", studlist); 

चाबियाँ छात्रों और छात्रों की मूल्य सूची होगी। तो बाद में आप केवल विद्यार्थियों का एक समूह प्राप्त कर सकते हैं:

 studlist = map.get("New York"); 

आप guava के Multimaps उपयोग कर सकते हैं

 @Canonical class Persion { String name Integer age } List<Persion> list = [ new Persion("qianzi", 100), new Persion("qianzi", 99), new Persion("zhijia", 99) ] println Multimaps.index(list, { Persion p -> return p.name }) 

यह प्रिंट करता है:

[qianzi: [com.ctcf.message.Persion (qianzi, 100), com.ctcf.message.Persion (qianzi, 88)], zhijia: [com.ctcf.message.Persion (zhijia, 99)]]