Heim  >  Artikel  >  Lamba-Funktion funktioniert nicht in der Java-GroupingBy-Methode (über die Collectors-Schnittstelle)

Lamba-Funktion funktioniert nicht in der Java-GroupingBy-Methode (über die Collectors-Schnittstelle)

PHPz
PHPznach vorne
2024-02-11 08:15:07607Durchsuche

Der

php-Editor Strawberry stellt Ihnen in diesem Artikel die Rolle der Lamba-Funktion in der groupingBy-Methode von Java vor. groupingBy ist eine Methode zur Gruppierung, die über die Collectors-Schnittstelle implementiert wird. Allerdings funktioniert die Lamba-Funktion bei dieser Methode nicht. Als Nächstes werden wir detailliert erläutern, warum die Lamba-Funktion nicht in der Methode „groupingBy“ verwendet werden kann, und einige Alternativen bereitstellen. Lasst uns gemeinsam erkunden!

Frageninhalt

Ich habe meine erste Karte erstellt, bei der die Schlüssel String-Slots für Sportkurse und die Werte die Anzahl der Teilnehmer pro Slot sind. Jetzt möchte ich eine zweite Karte mit grundsätzlich umgekehrten Schlüsseln und Werten erstellen, sodass der Schlüssel die Anzahl der Teilnehmer und der Wert die Liste der Slots mit dieser Anzahl an Teilnehmern ist. Ich habe diesen Code geschrieben, aber ich weiß nicht, warum er sich über meine Lambda-Funktion im zweiten Java-Stream beschwert ... Ich habe buchstäblich eine Stunde darüber nachgedacht und wäre für jede Hilfe wirklich dankbar! Vielen Dank im Voraus, hier ist der Code:

public SortedMap<Integer, List<String>> slotsPerNofParticipants(String gymnname) throws FitException{
        // map with key = Slot   value = number of participants for the slot
        Map<String, Long> map = this.reservationsColl.stream().filter(r->r.getGym().getName().equals(gymnname))
        .collect(Collectors.groupingBy(r->r.getDayslotStringFormat(),
                Collectors.counting() ));
        // map with key = number of participants  value = list of slot with that number of participants
        Map<Integer,List<String>> res = map.entrySet().stream()
                .collect(Collectors.groupingBy(
                        e->e.getValue.intValue(),
                        Collectors.mapping(e->e.getKey, Collectors.toList() ) ) );
        
        return null;
    }

Wie Sie sehen, versuche ich, den Wert der ersten Karte (long) mithilfe einer Lambda-Funktion in einen ganzzahligen Schlüssel umzuwandeln ... Ich weiß nicht, warum es sich über die Lambda-Funktion beschwert ... Die Fehlermeldung lautet: „getkey kann nicht geparst werden oder ist kein Feld“ „getvalue kann nicht geparst werden oder ist kein Feld“

Lösung

Hier liegt ein Problem vor. Sie haben einige Tippfehler.

  • getvalue 应该是 getvalue()
  • getkey 应该是 getkey()

UnkorrigierterCode

Map<Integer,List<String>> res = map.entrySet().stream()
                .collect(Collectors.groupingBy(
                        e->e.getValue.intValue(),
                        Collectors.mapping(e->e.getKey, Collectors.toList() ) ) );

Alle anderen durch Objekte verursachten Fragen sollten eine Deklaration der Klasse und einige Beispieldaten enthalten.

Sollte Eingabe und erwartete Ausgabe enthalten.

Das obige ist der detaillierte Inhalt vonLamba-Funktion funktioniert nicht in der Java-GroupingBy-Methode (über die Collectors-Schnittstelle). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen