Ich habe die folgende Klasse.Java 8 Gruppierung mit benutzerdefinierten Kollektor?
Ich möchte in der Lage sein, nach Alter zu gruppieren und dann die Liste der Personennamen anstatt das Objekt Person selbst zu sammeln; Alles in einem einzigen schönen Lamba-Ausdruck.
Um all dies zu vereinfachen, verbinde ich meine aktuelle Lösung, die das Ergebnis der Gruppierung nach Alter speichert und dann iteriert, um die Namen zu sammeln.
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()));
});
nicht ideal und zum Wohl des Lernens ich eine elegantere und leistungsfähigste Lösung haben möchte.
Ops, das war einfach eh! Prost! – lcardito