最近做一个工时报表的功能。需要对每个项目、每天的工时横向、纵向合计。横向很简单,直接累加集合的元素就是。纵向由于是多个集合,需要对不同集合相同位置的元素值累加。
下面用几个简单数组模拟一下场景,可以把数组替换成集合。
模拟数据如下:
//模拟a、b、c项目4天的工时,实际天数更加指定月份动态生成。
//项目个数也是动态的。这里模拟3个项目
int [] a = {2,3,4,1};
int [] b = {1,5,1,1};
int [] c = {2,3,4,2};
int [][] arr = new int[3][];
arr[0]=a; arr[1]=b; arr[2]=c;
希望达到的效果:
a、b、c 。。。3个项目1号-4号,4天的总工时分别是5、11、9、4
实际上就是把多个数组,相同位置的值累加
关键代码如下:
//随便取一个项目的天数,项目天数是固定的。每个项目天数都是一样。
//如果是别的业务场景,数组内的元素个数不固定,则需要取最长的那个数组的元素
int childLength = arr[0].length;
System.out.print("合计:");
//外循环天数,也就是需要合计多少天的数据
for (int i = 0 ;i<childLength;i++){
// i= 0时,第一天。。。以此类推
int sum = 0;
//内层循环项目
for (int[] j: arr) {
//多个项目,当天的工时累加。
sum+=j[i];
}
System.out.print(sum+" ");
}
脱敏后的真实效果如下: