Gruppieren nach mehreren Feldern in Java 8
Das Gruppieren von Objekten nach mehreren Feldnamen ist eine häufige Operation in der Java-Programmierung und kann problemlos durchgeführt werden Dies wird mithilfe der Stream-API von Java 8 und der Methode Collectors.groupingBy() erreicht.
Der in der Frage bereitgestellte Code zeigt, wie Objekte nach a gruppiert werden einzelner Feldname:
Map<Integer, List<Person>> peopleByAge = people .collect(Collectors.groupingBy(p -> p.age, Collectors.mapping((Person p) -> p, toList())));
Um Objekte nach mehreren Feldern zu gruppieren, besteht die erste Möglichkeit darin, mehrere Kollektoren zu verketten:
Map<String, Map<Integer, List<Person>>> map = people .collect(Collectors.groupingBy(Person::getName, Collectors.groupingBy(Person::getAge)));
Eine andere Möglichkeit besteht darin, eine Klasse zu erstellen, die die Gruppierungskriterien darstellt , wie z. B. NameAge im folgenden Code:
class Person { record NameAge(String name, int age) { } public NameAge getNameAge() { return new NameAge(name, age); } } ... Map<NameAge, List<Person>> map = people.collect(Collectors.groupingBy(Person::getNameAge));
Schließlich ist es möglich, eine Bibliothek eines Drittanbieters wie Apache Commons Pair zu verwenden, um ein Pair-Objekt zu erstellen zum Gruppieren:
Map<Pair<String, Integer>, List<Person>> map = people.collect(Collectors.groupingBy(p -> Pair.of(p.getName(), p.getAge())));
Durch die Nutzung dieser Gruppierungstechniken ist es möglich, Objekte in Java 8 effizient nach mehreren Feldnamen zu gruppieren, was eine bequeme Möglichkeit bietet, Daten basierend auf bestimmten Kriterien zu organisieren und darauf zuzugreifen.
Das obige ist der detaillierte Inhalt vonWie kann ich Objekte mithilfe von Java 8-Streams nach mehreren Feldern gruppieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!