Rumah >Java >Fungsi Lamba tidak berfungsi dalam kumpulan javaMengikut kaedah (melalui antara muka Pengumpul)

Fungsi Lamba tidak berfungsi dalam kumpulan javaMengikut kaedah (melalui antara muka Pengumpul)

PHPz
PHPzke hadapan
2024-02-11 08:15:07657semak imbas

editor php Strawberry akan memperkenalkan kepada anda peranan fungsi Lamba dalam kaedah groupingBy Java dalam artikel ini. groupingBy ialah kaedah untuk pengelompokan yang dilaksanakan melalui antara muka Pengumpul. Walau bagaimanapun, fungsi Lamba tidak berfungsi dalam kaedah ini. Seterusnya, kami akan memperincikan mengapa fungsi Lamba tidak boleh digunakan dalam kaedah groupingBy dan menyediakan beberapa alternatif. Mari kita meneroka bersama-sama!

Kandungan soalan

Saya mencipta peta pertama saya di mana kuncinya ialah slot rentetan untuk kelas sukan dan nilainya ialah bilangan peserta setiap slot. Sekarang saya ingin mencipta peta kedua dengan kunci dan nilai pada dasarnya diterbalikkan, jadi kuncinya ialah bilangan peserta dan nilainya ialah senarai slot dengan bilangan peserta itu. Saya menulis kod ini tetapi saya tidak tahu mengapa ia mengadu tentang fungsi lambda saya dalam aliran java kedua... Saya benar-benar menghabiskan satu jam memikirkannya dan saya amat menghargai sebarang bantuan! Terima kasih terlebih dahulu, berikut kodnya:

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;
    }

Seperti yang anda lihat, saya cuba menukar nilai peta pertama (panjang) kepada kekunci jenis integer menggunakan fungsi lambda... Saya tidak tahu mengapa ia mengeluh tentang fungsi lambda... Mesej ralat ialah: "getkey tidak boleh dihuraikan atau bukan medan" "getvalue tidak boleh dihuraikan atau bukan medan"

Penyelesaian

Ada masalah di sini. Anda mempunyai beberapa kesilapan taip.

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

KodTidak dibetulkan

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

Sebarang soalan lain yang disebabkan oleh objek hendaklah termasuk pengisytiharan kelas dan beberapa data sampel.

Hendaklah memasukkan input dan output yang dijangkakan.

Atas ialah kandungan terperinci Fungsi Lamba tidak berfungsi dalam kumpulan javaMengikut kaedah (melalui antara muka Pengumpul). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam