Heim > Java > javaLernprogramm > Wie kann ich Objekte mithilfe von Java 8-Streams nach mehreren Feldern gruppieren?

Wie kann ich Objekte mithilfe von Java 8-Streams nach mehreren Feldern gruppieren?

Patricia Arquette
Freigeben: 2024-12-04 00:11:10
Original
641 Leute haben es durchsucht

How Can I Group Objects by Multiple Fields Using Java 8 Streams?

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())));
Nach dem Login kopieren

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)));
Nach dem Login kopieren

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));
Nach dem Login kopieren

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())));
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage