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
Lepaskan: 2024-02-11 08:15:07
ke hadapan
660 orang telah melayarinya

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;
    }
Salin selepas log masuk

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() ) ) );
Salin selepas log masuk

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan