Map<Integer, OperationCountVO> collect = operationInfos.stream().collect(Collectors.groupingBy(OperationCountVO::getCityId,
Collectors.reducing(new OperationCountVO(), (OperationCountVO v1, OperationCountVO v2) -> {
v1.setSurgeryCount(v1.getSurgeryCount() + v2.getSurgeryCount());
v1.setCityId(v2.getCityId());
return v1;
})));
Mungkin saya mahu mengumpulkan koleksi operationInfos mengikut cityId di dalam, dan kemudian jika cityId adalah sama, tambah SurgeryCount objek dan kembalikannya, tetapi kini v1 pertama adalah batal,
Laksanakan v1.setSurgeryCount(v1. getSurgeryCount() + v2.getSurgeryCount());
Jika
v1
是null
的话,那就说明operationInfos
集合里面是有null
的,因为是要根据OperationCountVO
的cityId
进行分组,那OperationCountVO
一定不为null,建议前面直接加filter
tapisSaya baru komen dan dapat tahu... Kemungkinan punca ralat mungkin kerana
Collectors.reducing
中的第一个参数为new OperationCountVO()
,若new
出来的OperationCountVO
对象的surgeryCount
为Integer
类型,不是基本类型的话,所以没有初始化,surgeryCount
就为null
,在做v1.getSurgeryCount() + v2.getSurgeryCount()
ralat mungkin dilaporkan semasa operasi(ps: Untuk
reducing
中的第二个参数BinaryOperator
,最好还是封装到OperationCountVO
objek, nampaknya kod itu lebih deklaratif... Terlalu hodoh untuk menulis kod seperti ini... Haha... Atau lebih baik menulisnya dan menulisnya sebagai akhir statik berubah-ubah, supaya ia boleh dipanggil di mana-mana )Sebagai contoh, tambahkan yang baharu terus ke kategori ini
SurgeryCount
属性合并的BinaryOperator
,名字就叫surgeryCountMerge
Kod berikut boleh ditukar kepada
Selepas menulis ini, saya sebenarnya mendapati bahawa penulis soalan mungkin mempunyai sedikit masalah untuk melakukannya, akhirnya, ia hanya untuk mengembalikan
Map
嘛,所以建议不使用groupingBy
,毕竟分组返回结果是一对多这样的结构,不是一对一的结构,那直接使用toMap
, jadi klik sahajaIni lebih pantas dan tiada ralat akan dilaporkan, haha