मेरे पास निम्न श्रेणी है।कस्टम कलेक्टर का उपयोग कर जावा 8 ग्रुपिंग?
class Person {
String name;
LocalDate birthday;
Sex gender;
String emailAddress;
public int getAge() {
return birthday.until(IsoChronology.INSTANCE.dateNow()).getYears();
}
public String getName() {
return name;
}
}
मैं उम्र से समूह के लिए सक्षम होने के लिए और उसके बाद व्यक्ति वस्तु ही व्यक्तियों के नाम के बजाय की सूची को इकट्ठा करना चाहते हैं; सब एक अच्छा लांबा अभिव्यक्ति में।
इस सब को सरल बनाने के लिए मैं अपने वर्तमान समाधान को जोड़ रहा हूं जो समूह के परिणाम को उम्र के आधार पर संग्रहीत करता है और फिर नाम एकत्र करने के लिए इसे फिर से चलाता है।
ArrayList<OtherPerson> members = new ArrayList<>();
members.add(new OtherPerson("Fred", IsoChronology.INSTANCE.date(1980, 6, 20), OtherPerson.Sex.MALE, "[email protected]"));
members.add(new OtherPerson("Jane", IsoChronology.INSTANCE.date(1990, 7, 15), OtherPerson.Sex.FEMALE, "[email protected]"));
members.add(new OtherPerson("Mark", IsoChronology.INSTANCE.date(1990, 7, 15), OtherPerson.Sex.MALE, "[email protected]"));
members.add(new OtherPerson("George", IsoChronology.INSTANCE.date(1991, 8, 13), OtherPerson.Sex.MALE, "[email protected]"));
members.add(new OtherPerson("Bob", IsoChronology.INSTANCE.date(2000, 9, 12), OtherPerson.Sex.MALE, "[email protected]"));
Map<Integer, List<Person>> collect = members.stream().collect(groupingBy(Person::getAge));
Map<Integer, List<String>> result = new HashMap<>();
collect.keySet().forEach(key -> {
result.put(key, collect.get(key).stream().map(Person::getName).collect(toList()));
});
आदर्श नहीं और सीखने की खातिर मैं एक और अधिक सुरुचिपूर्ण और प्रदर्शन समाधान करना चाहते हैं के लिए।
ओपीएस, यह आसान था एह! चीयर्स! – lcardito