JAVA集合框架工具类自定义Collections集合方法
项目中有需要多次统计某些集合中的某个属性值,所以考虑封装一个方法,让其其定义实现计算方式。话不多说,看代码:
1、封装的自定义集合工具类:CollectionsCustom
packagecom.test.util; importjava.util.Collection; importorg.apache.commons.collections.CollectionUtils; /** *自定义集合处理类 */ publicclassCollectionsCustom{ /** *将传入的collection内对象进行计算后得出结果 *@paramoriginal计算前collection *@paramreduceFunction计算方式 *@paraminitValue计算结果初始值 *@paramcollection对象类型 *@param
2、测试类TestCollections
packagecom.test; importjava.math.BigDecimal; importjava.util.Arrays; importjava.util.List; importcom.test.util.CollectionsCustom; publicclassTestCollection{ privatestaticListlist=Arrays.asList( newUser("张三",BigDecimal.valueOf(35.6),18), newUser("李四",BigDecimal.valueOf(85),30), newUser("赵六",BigDecimal.valueOf(66.55),25)); publicstaticvoidmain(String[]args){ //统计集合内分数之和 testTotalScore(); //统计集合内年龄之和 testTotalAge(); } privatestaticvoidtestTotalScore(){ //统计集合内分数之和 BigDecimaltotalScore=CollectionsCustom.reduce(list,BigDecimal.ZERO,newCollectionsCustom.ReduceFunction (){ @Override publicBigDecimalapply(Userinput,BigDecimallastResult){ //TODOAuto-generatedmethodstub returnlastResult.add(input.getScore()); } }); System.out.println("总共分数:"+totalScore); } privatestaticvoidtestTotalAge(){ //统计集合内年龄之和 IntegertotalAge=CollectionsCustom.reduce(list,0,newCollectionsCustom.ReduceFunction (){ @Override publicIntegerapply(Userinput,IntegerlastResult){ //TODOAuto-generatedmethodstub returnlastResult+=input.getAge(); } }); System.out.println("总共年龄:"+totalAge); } staticclassUser{ privateStringuserName;//姓名 privateBigDecimalscore;//分数 privateIntegerage; publicStringgetUserName(){ returnuserName; } publicvoidsetUserName(StringuserName){ this.userName=userName; } publicBigDecimalgetScore(){ returnscore; } publicvoidsetScore(BigDecimalscore){ this.score=score; } publicIntegergetAge(){ returnage; } publicvoidsetAge(Integerage){ this.age=age; } publicUser(StringuserName,BigDecimalscore,Integerage){ super(); this.userName=userName; this.score=score; this.age=age; } publicUser(){ //TODOAuto-generatedconstructorstub } } }
3、测试输出结果:
总共分数:187.15
总共年龄:73
这里如果传入的是封装类型Integer等,最好自己做下非空处理。相信高质量的封装代码能为你自己加分的!
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接