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等,最好自己做下非空处理。相信高质量的封装代码能为你自己加分的!
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接