java-8 - Streams, die Karte und count distinct

Mein Erster Versuch mit java-8-streams...

Ich ein Objekt, das Gebot, das entspricht einem Gebot von einem Benutzer für ein Objekt in einer Auktion. ich habe eine Liste von geboten, und ich möchte, um eine Karte, die zählt, wie viele (verschiedene) - Auktionen der user ein Gebot gemacht.

dies ist mein nehmen auf Sie:

bids.stream()
         .collect(
             Collectors.groupingBy(
                  bid ->  Bid::getBidderUserId, 
                  mapping(Bid::getAuctionId, Collectors.toSet())
             )
         ).entrySet().stream().collect(Collectors.toMap(
             e-> e.getKey(),e -> e.getValue().size())
        );

Funktioniert es, aber ich fühle mich, als würde ich Cheaten, weil ich stream der Eintrag legt die Karte, anstatt das zu tun, eine manipulation, die auf den ersten stream... muss ein richtiger Weg, dies zu tun, aber ich konnte nicht es herausfinden...

Dank

  • Können Sie Ihre Erklärung der Gebote für ein Objekt?
InformationsquelleAutor Zemer | 2015-05-17
Schreibe einen Kommentar