private List percentageTotalTo1(List<SourceResultJO> resultJOList) {
double max = 0.0;
double percentageTotal = 0.0;
int index = 0;
for (int i = 0; i < resultJOList.size(); i++){
SourceResultJO resultItem = resultJOList.get(i);
if (resultItem.getPercentage() > max){
max = resultItem.getPercentage();
index = i;
percentageTotal += resultItem.getPercentage();
}
}
// myNotes: 修正百分比之和不等于1的问题
max = percentageTotal > 1 ? max - (percentageTotal - 1): max + (1 - percentageTotal);
resultJOList.get(index).setPercentage(max);
return resultJOList;
}
以上代码试图对resultJOList进行处理,resultJOList中的每个元素都有一个percentage属性和对应的getPercentage方法,原则上来说,一个resultJOList中所有元素的percentage之和应该等于1,但在四舍五入后,可能会出现percentage之和不等于1的情况,这段代码就是用于处理这个情况。
现在有多个元素类型不同的resultJOList待处理,也就是说传入的resultJOList参数可以是 List《SourceResultJO》,也可以是 List《AResultJO》,还可以是 List《BResultJO》、 List《CResultJO》,且SourceResultJO、AResultJO、BResultJO、CResultJO类中都有percentage属性和getPercentage方法,请问这种情况应该如何进行代码抽取和复用?