Java-8 - Mehrere Group by In-Karte-Sammlung
Ich versuche zu tun, eine groupingBy auf zwei Attributen zu einem Objekt mit Java-streams. Das ist einfach genug, wie wurde dokumentiert durch einige Antworten:
products.stream().collect(
Collectors.groupingBy(Product::getUpc,
Collectors.groupingBy(Product::getChannelIdentifier)));
beispielsweise das obige snippet erzeugt eine Karte der Karten in form
Map<String, Map<String, List<Product>>>
Denen eine Karte hat die Schlüssel des UPC-codes und Ihre Werte sind Karten, die Tasten von Kanal-IDS, die Referenz eine Liste von Produkten.
Das ist cool, aber was ist, wenn ich nicht brauchen, die verschachtelte Wert einer Karte? Das heißt, ich will organisieren, die geschachtelte Kollektion von ChannelIdentifier, aber ich habe nur die Sorge um die .(die Werte) von der Karte, nicht die Karte selbst. Gibt es eine Möglichkeit, um ein Ergebnis zu erhalten, dass die folgenden entspricht?
Map<String, List<List<Product>>
Listen oder Sammlungen... es spielt keine Rolle. Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Gruppierung Betrieb zwangsläufig muss weiterhin eine
Map
wie es zu verfolgen, die wichtigsten Werte für die Gruppierung. Aber Sie können denvalues()
Blick direkt:Wenn die resultierende Karte haben eine längere Lebensdauer und Sie möchten, dass zur Verringerung des benötigten Speicherplatzes, oder wenn Sie ein
List
Sie können kopieren Sie die Ansicht in eine Liste, die während dieses Schritt: