Nilai Null dalam Collectors.toMap: Penjelasan dan Penyelesaian Java 8
Kaedah Java 8's Collectors.toMap membuang NullPointerException apabila ia menemui null nilai sebagai hujah kedua, walaupun peta membenarkan nilai nol sebagai nilai. Gelagat pelik ini telah mencetuskan kekeliruan dalam kalangan pembangun.
Sebab Di Sebalik Gelagat
Sebab asas bagi gelagat ini ialah pepijat yang diketahui dalam pelaksanaan OpenJDK Collectors.toMap. Kaedah ini cuba menggabungkan nilai semasa dan baharu untuk kunci yang diberikan menggunakan operasi HashMap.merge. Walau bagaimanapun, operasi ini tidak mengendalikan nilai nol dengan anggun, mengakibatkan pengecualian.
Penyelesaian Java 8
Untuk menyelesaikan isu ini, anda boleh menggunakan pendekatan berikut :
Peta
Kod ini mencipta HashMap baharu dan menggunakan pengumpul tersuai untuk mengisinya dengan menggunakan kaedah put secara langsung. Pendekatan ini membenarkan nilai nol ditambah.
Pertimbangan Lain
Tidak seperti Collectors.toMap, penyelesaian yang disediakan akan menggantikan nilai secara senyap jika kunci yang sama muncul beberapa kali. Jika ini tidak diingini, anda mungkin ingin mempertimbangkan penyelesaian alternatif yang disediakan dalam bahagian komen.
Dengan memahami sebab di sebalik NullPointerException dan menggunakan penyelesaian, anda boleh mengendalikan nilai nol dengan berkesan apabila menggunakan Collectors.toMap.
Atas ialah kandungan terperinci Mengapa Collectors.toMap Melemparkan NullPointerException untuk Nilai Null?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!