ホームページ  >  に質問  >  本文

java-ee - java8のCollectors.reducing()

リーリー

おそらく、operationInfos コレクションをその中の cityId に従ってグループ化し、cityId が同じ場合はオブジェクトの SurgeryCount を追加して返したいと考えていますが、最初の v1 は null なので、
v1 を実行します。 .setSurgeryCount(v1.getSurgeryCount() v2.getSurgeryCount()); が null ポインタを報告しましたが、記述した場所に問題がありますか?

三叔三叔2686日前1298

全員に返信(1)返信します

  • 伊谢尔伦

    伊谢尔伦2017-07-03 11:45:35

    フィルターでv1null的话,那就说明operationInfos集合里面是有null的,因为是要根据OperationCountVOcityId进行分组,那OperationCountVO一定不为null,建议前面直接加filterを除外した場合 リーリー

    コメントして気づいたことがあります...エラーの考えられる理由は、

    操作中にエラーが報告された可能性がありますCollectors.reducing中的第一个参数为new OperationCountVO(),若new出来的OperationCountVO对象的surgeryCountInteger类型,不是基本类型的话,所以没有初始化,surgeryCount就为null,在做v1.getSurgeryCount() + v2.getSurgeryCount()

    (追記:

    オブジェクトの場合、コードはより宣言的なようです...このようなコードを書くのはあまりにも醜いです...はは...または、それを書き出して静的なファイナルとして書いた方が良いです変数なので、どこでも呼び出すことができます)reducing中的第二个参数BinaryOperator,最好还是封装到OperationCountVO

    たとえば、新しいカテゴリをこのカテゴリに直接追加します

    SurgeryCount属性合并的BinaryOperator,名字就叫surgeryCountMerge リーリー

    次のコードは

    に変更できます リーリー

    書いてみて、実は質問者さんはちょっと面倒だったかも知れませんが、結局は

    を返すだけなので、そのままMap嘛,所以建议不使用groupingBy,毕竟分组返回结果是一对多这样的结构,不是一对一的结构,那直接使用toMapをクリックしてください。 リーリー

    これははるかに高速で、エラーは報告されません、笑

    返事
    0
  • キャンセル返事