浏览 6146 次
锁定老帖子 主题:一个简单的二维数组迭代
精华帖 (0) :: 良好帖 (0) :: 新手帖 (7) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-10-10
使用的是模拟数据迭代,真实数据可以传入几个List(如果使用sql语句的group by,将很方便),还有一个表头就可以了,如果有不同的需求可以修改下面的方法。 /** * 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; } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-10-11
敢问lz个问题,什么叫做迭代?
有循环就叫迭代么? |
|
返回顶楼 | |
发表时间:2007-10-13
循环和迭代意思差不多,看习惯了,集合迭代叫的多一些。
|
|
返回顶楼 | |
发表时间:2008-01-20
请用 遍历这个名词……不要把初学者弄糊涂。
另外对于list,用iterator遍历有时候更安全。 |
|
返回顶楼 | |