一个简单的二维数组迭代

今天做项目,碰到一个二维数据迭代的问题,现封装成一个简单的方法。欢迎提出更好的建议,我是使用二维数组迭代的。
使用的是模拟数据迭代,真实数据可以传入几个List(如果使用sql语句的group by,将很方便),还有一个表头就可以了,如果有不同的需求可以修改下面的方法。
[code]
/**
* 2007, 北京, 2
* 2007, 上海, 2
* 2006, 广州, 6
* 2006, 南京, 7
* 2005, 湖南, 8
* 2005, 湖北, 9
* 2004, 天津, 3
* 2004, 海南, 7
* @param tableHead 纵轴的表头
* @param xlist 横轴
* @param ylist 纵轴
* @param reportList 记录数据
* @return
*/
public String[][] getReportArray(String tableHead, List xlist, List ylist, List reportList) {

int x_len = xlist.size();
int y_len = ylist.size();
//第一维数组为y轴,第二维数组为x轴
String[][] reportArray = new String[y_len + 2][x_len + 2];
reportArray[0][0] = tableHead;
reportArray[0][x_len + 1] = "总计";
for(int x = 1; x < x_len + 1; x++) {
reportArray[0][x] = (String) xlist.get(x - 1);
}
for(int y = 1; y < y_len + 1; y++) {
reportArray[y][0] = (String) ylist.get(y - 1);
}

int report_len = reportList.size();
double amount = 0;
double[] y_amount = new double[x_len + 2];
for(int y = 1; y < y_len + 1; y++) {
double x_count = 0;
for(int x = 1; x < x_len + 1; x++) {
for(int k = 0; k < report_len; k++) {
ReportBean reportBean = (ReportBean) reportList.get(k);
if(reportBean.getX().equals(xlist.get(x - 1)) && reportBean.getY().equals(ylist.get(y - 1))) {
String value = reportBean.getValue();
reportArray[y][x] = reportBean.getValue();
x_count += Double.parseDouble(value);
amount += Double.parseDouble(value);
}
}
//如果不存在数据,则为0
if(reportArray[y][x] == null) {
reportArray[y][x] = "0";
}
y_amount[x] += Double.parseDouble(reportArray[y][x]);
reportArray[y_len + 1][x] = y_amount[x] + "";
}
reportArray[y][x_len + 1] = x_count + "";
}
reportArray[y_len + 1][0] = "合计";
reportArray[y_len + 1][x_len + 1] = amount + "";
return reportArray;
}
[/code]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值