packagecn.demo;
import org.apache.commons.collections.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
/**
* @author Administrator
* @date 2020/7/31
*/
public class GrowthRateDemo {
/**
* 初始化数据
* @return
*/
public static List getPerson(){
List list=new ArrayList<>();
PersonInfo personInfo=new PersonInfo();
personInfo.setCountNumber(100);
personInfo.setCreateTime("2016");
PersonInfo personInfo2=new PersonInfo();
personInfo2.setCountNumber(450);
personInfo2.setCreateTime("2017");
PersonInfo personInfo4=new PersonInfo();
personInfo4.setCountNumber(22);
personInfo4.setCreateTime("2018");
PersonInfo personInfo5=new PersonInfo();
personInfo5.setCountNumber(100);
personInfo5.setCreateTime("2019");
PersonInfo personInfo6=new PersonInfo();
personInfo6.setCountNumber(200);
personInfo6.setCreateTime("2020");
list.add(personInfo);
list.add(personInfo2);
list.add(personInfo4);
list.add(personInfo5);
list.add(personInfo6);
return list;
}
/**
* 计算年度增长率
*
* 以年度分组
*
* 增长率: (a-b)b*100+'%' =》(前面的数字-后面的数字)/后面的数字*100
*/
public static List getAnalysisData(){
List result =new ArrayList<>();
List person2 =new ArrayList<>();
List person0=new ArrayList<>();
List person = getPerson();
//第1项
PersonInfo personInfo0 = person.get(0);
personInfo0.setGrowthRate("0%");
person0.add(personInfo0);
//第一项不做比较
if (CollectionUtils.isNotEmpty(person)){
for (int i = 1; i < person.size(); i++) {
PersonInfo personInfo=new PersonInfo();
Integer countNumber = person.get(i).getCountNumber();
Integer countNumber1 = person.get(i - 1).getCountNumber();
if (countNumber
//如果下个数大于上个数,则增长率 为 正
String growthRate=(countNumber1-countNumber)/countNumber*100+"%";
personInfo.setGrowthRate("-"+growthRate);
}else if (countNumber>countNumber1){
//如果下个数小于上个数,则增长率 为 负
String growthRate= (countNumber-countNumber1)/countNumber1*100+"%";
personInfo.setGrowthRate(growthRate);
}else{
//如果相等,增长率为 0
personInfo.setGrowthRate("0%");
}
personInfo.setCountNumber(person.get(i).getCountNumber());
personInfo.setCreateTime(person.get(i).getCreateTime());
person2.add(personInfo);
}
}
//list合并
result.addAll(person0);
result.addAll(person2);
return result;
}
public static void main(String[] args) {
List analysisData = getAnalysisData();
if (CollectionUtils.isNotEmpty(analysisData)){
analysisData.stream().forEach(item->{
System.out.println("数量:"+item.getCountNumber());
System.out.println("增长率:"+item.getGrowthRate());
System.out.println("时间:"+item.getCreateTime());
System.out.println("*****************************************************");
});
}
}
}