>  Q&A  >  본문

java-ee - java8의 Collectors.reducing()

으아악

아마도 내부의 cityId에 따라 OperationInfos 컬렉션을 그룹화하고 cityId가 동일하면 개체의 SurgeryCount를 추가하고 반환하려고 하지만 이제 첫 번째 v1은 null입니다.
Execute v1.setSurgeryCount(v1. getSurgeryCount() + v2.getSurgeryCount()); 널 포인터를 보고했습니다. 제가 작성한 위치에 문제가 있나요?

三叔三叔2686일 전1297

모든 응답(1)나는 대답할 것이다

  • 伊谢尔伦

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

    if v1null的话,那就说明operationInfos集合里面是有null的,因为是要根据OperationCountVOcityId进行分组,那OperationCountVO一定不为null,建议前面直接加filter필터링

    으아악

    댓글을 달고 찾아보니... 오류가 발생할 수 있는 이유는 Collectors.reducing中的第一个参数为new OperationCountVO(),若new出来的OperationCountVO对象的surgeryCountInteger类型,不是基本类型的话,所以没有初始化,surgeryCount就为null,在做v1.getSurgeryCount() + v2.getSurgeryCount()작업 중에 오류가 보고될 수도 있습니다

    (ps: reducing中的第二个参数BinaryOperator,最好还是封装到OperationCountVO 객체의 경우 코드가 더 선언적인 것 같네요... 이렇게 코드를 작성하기엔 너무 보기 흉하네요... ㅎㅎ... 아니면 그냥 써서 static final로 쓰는 게 낫습니다. 어디에서나 호출할 수 있도록 변수)

    예를 들어, 이 카테고리에 직접 새 카테고리를 추가하세요SurgeryCount属性合并的BinaryOperator,名字就叫surgeryCountMerge

    으아악

    다음 코드는

    로 변경할 수 있습니다. 으아악

    이 글을 쓰고 나니 실제로 질문 작성자가 약간의 어려움을 겪을 수 있다는 것을 알았습니다. 결국 Map嘛,所以建议不使用groupingBy,毕竟分组返回结果是一对多这样的结构,不是一对一的结构,那直接使用toMap를 반환하는 것뿐이므로

    를 클릭하십시오. 으아악

    이것이 훨씬 빠르고 오류도 보고되지 않습니다. 하하

    회신하다
    0
  • 취소회신하다