private List<AppPercentageOrAmountModel> getCountListByType(List<SecurityPersionDetail> allGuards, Function<? super SecurityPersionDetail,?> function,String number){
List<Object> stringList = allGuards.stream().map(function).distinct().collect(Collectors.toList());
List<AppPercentageOrAmountModel> resultList = new ArrayList<>();
for(Object s:stringList){
if(null!=s){
Long count = allGuards.stream().map(function).filter(s::equals).count();
Double per = parseRoundDouble(count.doubleValue()*100 / allGuards.size());
String typeId = s.toString();
String typeName = globalConstantService.getNameValue(number+typeId);
resultList.add(new AppPercentageOrAmountModel(BigDecimal.valueOf(per),count,typeId,typeName,(long)allGuards.size()));
}
}
return resultList;
}
在调用时,只需要传入function即可,function可以是SecurityPersionDetail::getXXXX 之类,如此这般即可实现代码复用